Physics Faculty, Electronic Devices & Systems, 7th semester,2011
Dr. Mokhovikov Alexander YurievichLection №4:Программная модель процессора
Lection №4:Программная модель процессора
Резюме к лекции и список используемой литературы
Программная модель процессора:
● Введение ;
● Регистры процессора
Physics Faculty, Electronic Computing Devices & Systems, 7th semester,2011 Dr.Mokhovikov Alexander Yurievich
Программная модель процессора: Введение
Основой построения
регистров являются
D-триггеры, RS-триггеры.
Я всё понял!
!
Physics Faculty, Electronic Computing Devices & Systems, 7th semester,2011 Dr.Mokhovikov Alexander Yurievich
Программная модель процессора: Введение
Доступ к значениям, хранящимся в регистрах, как правило, в несколько раз быстрее, чем доступ к ячейкам оперативной памяти (даже если кэш-память содержит нужные данные), но объем оперативной памяти намного превосходит суммарный объем регистров
!
Physics Faculty, Electronic Computing Devices & Systems, 7th semester,2011 Dr.Mokhovikov Alexander Yurievich
Программная модель процессора: Введение
> однонаправленные;
> реверсивные
двоичные;
Троичные;
Десятичные
Программная модель процессора: Введение
Physics Faculty, Electronic Computing Devices & Systems, 7th semester,2011 Dr.Mokhovikov Alexander Yurievich
Программная модель процессора
Physics Faculty, Electronic Computing Devices & Systems, 7th semester,2011 Dr.Mokhovikov Alexander Yurievich
Принцип работы
Например, CS содержит значение 2CB50H, в регистре IP хранится смещение 123H.
Адрес следующей инструкции, подлежащей исполнению, вычисляется путем суммирования адреса в CS (сегменте кода) со смещением в регистре IP:
2CB50H + 123H = 2CC73H
Таким образом, адрес следующей инструкции для исполнения равен 2CC73H.
При выполнении текущей инструкции процессор автоматически изменяет значение в регистре IP, в результате чего регистровая пара CS:IP всегда указывает на следующую подлежащую исполнению инструкцию.
Physics Faculty, Electronic Computing Devices & Systems, 7th semester,2011 Dr.Mokhovikov Alexander Yurievich
Программная модель процессора
регистр AX — умножение, деление, обмен с устройствами ввода/вывода (команды ввода и вывода);
регистр BX — базовый регистр в вычислениях адреса;
регистр CX — счетчик циклов;
регистр DX — определение адреса ввода/вывода.
Программная модель процессора
Physics Faculty, Electronic Computing Devices & Systems, 7th semester,2011 Dr.Mokhovikov Alexander Yurievich
Регистры-указатели используются для работы со стеком.
BP (Base Pointer) позволяет работать с переменными в стеке. Его также можно использовать в других целях.
SP (Stack Pointer) указывает на вершину стека. Он используется командами, которые работают со стеком.
Сегментные регистры
CS (Code Segment), DS (Data Segment), SS (Stack Segment) и ES (Enhanced Segment) предназначены для обеспечения сегментной адресации. Код находится в сегменте кода, данные — в сегменте данных, стек — в сегменте стека и есть еще дополнительный сегмент данных. Реальный физический адрес получается путём сдвига содержимого сегментного регистра на 4 бита влево и прибавления к нему смещения (относительного адреса внутри сегмента).
ПРИМЕНЯЮТСЯ
в строковых операциях
при работе со стеком
для обращения сегменту
памяти
Программная модель процессора
Physics Faculty, Electronic Computing Devices & Systems, 7th semester,2011 Dr.Mokhovikov Alexander Yurievich
При приостановке задачи (используя многозадачные возможности процессора), процессор автоматически сохраняет значение флага регистров в TSS (task state segment), при активизации новой задачи процессор загружает регистр флагов из TSS новой задачи.
Physics Faculty, Electronic Computing Devices & Systems, 7th semester,2011 Dr.Mokhovikov Alexander Yurievich
Программная модель процессора
CF — устанавливается при переносе из/заёме в (при вычитании) старший значащий бит результата и показывает наличие переполнения в беззнаковой целочисленной арифметике. Также используется в длинной арифметике. только флаг CF можно изменять напрямую с помощью инструкций STC, CLC и CMC. Также, битовые инструкции (BT, BTS, BTR и BTC) копируют указанный бит во флаг CF.
PF — устанавливается, если младший значащий байт результата содержит чётное число единичных (ненулевых) битов. Изначально этот флаг был ориентирован на использование в коммуникационных программах.
AF — устанавливается при переносе из/заёме из бита 3 результата. Этот флаг ориентирован на использование в двоично-десятичной (binary coded decimal, BCD) арифметике.
ZF — устанавливается, если результат равен нулю.
SF — равен значению старшего значащего бита результата, который является знаковым битом в знаковой арифметике.
OF — устанавливается, если целочисленный результат слишком длинный для размещения в целевом операнде (регистре или ячейке памяти). Этот флаг показывает наличие переполнения в знаковой целочисленной арифметике (в дополнительном коде).
Physics Faculty, Electronic Computing Devices & Systems, 7th semester,2011 Dr.Mokhovikov Alexander Yurievich
Программная модель процессора
Беззнаковое
Если результат считать беззнаковым числом, то флаг CF показывает условие переполнения (перенос или заём)
Знаковое
для знакового результата (в дополнительном коде) перенос или заём показывает флаг OF
Двоично-десятичное кодированное
(BCD) целое число
для BCD-результата перенос/заём показывает флаг AF
Physics Faculty, Electronic Computing Devices & Systems, 7th semester,2011 Dr.Mokhovikov Alexander Yurievich
Программная модель процессора
Абстрактный пример использования регистров флагов состояния
В длинной целочисленной арифметике флаг CF используется совместно с инструкциями сложения с переносом (ADC) и вычитания с заёмом (SBB) для распространения переноса или заёма из одного вычисляемого разряда длинного числа в другой.
Инструкции условного перехода Jcc (переход по условию cc — например, JNZ для перехода, если результат не ноль), SETcc (установить значение байта-результата в зависимости от условия cc), LOOPcc (организация цикла) и CMOVcc (условное копирование) используют один или несколько флагов состояния для проверки условия. Например, инструкция перехода JLE (jump if less or equal — переход, если «меньше или равен», ≤) проверяет условие «ZF=1 или SF ≠ OF».
Флаг PF был введён для совместимости с другими микропроцессорными архитектурами и по прямому назначению используется редко.
Более распространено его использование совместно с остальными флагами состояния в арифметике FPU.
Программная модель процессора
Physics Faculty, Electronic Computing Devices & Systems, 7th semester,2011 Dr.Mokhovikov Alexander Yurievich
Physics Faculty, Electronic Computing Devices & Systems, 7th semester,2011 Dr.Mokhovikov Alexander Yurievich
Программная модель процессора
str1 db 'Я хочу переслать эту строку в другое место‘
strlen db $-str1 ;длина пересылаемой строки
text db 80 dup(' ') ;Приемная строка
................................................................
mov CX, strllen ; Столько байтов переслать
push DS ;Настроим ES
pop ES ;на наш сегмент данных
lea SI, strl ;Теперь DS:SI-> строка-источник
lea Dl, text ;Теперь ES:DI-> строка-приемник
cld ;Двигаться по строке вперед
rep movsb ;Пересылка СХ байт
cld (Clear Direction Flag) - очистить флаг направления. Команда сбрасывает флаг направления df в 0.
std (Set Direction Flag) - установить флаг направления. Команда устанавливает флаг направления df в 1.
Пример использования цепочных команд.
Пересылка строки
Physics Faculty, Electronic Computing Devices & Systems, 7th semester,2011 Dr.Mokhovikov Alexander Yurievich
Системные флаги и поле IOPL
INT 3 — команда процессоров семейства x86, которая несёт функцию т. н. программного breakpoint, или точки останова.
● Исполнение команды приводит к вызову обработчика прерывания номер 3,
зарезервированного для отладочных целей.
● В отличие от остальных команд вида INT N, которые кодируются двумя байтами, команда INT 3 кодируется только одним байтом с кодом 0xCC, хотя, конечно, двухбайтная инструкция 0xCD 0x03 тоже будет работать.
Используется главным образом при отладке программ, отладчик может вставлять INT 3 в код отлаживаемой программы в точках останова.
Системные флаги и поле IOPL управляют операционной средой и не предназначены для использования в прикладных программах.
Но! т. к. не выполняется проверка типа инструкции, то для двубайтного Int 3 адрес останова и EIP будет указывать на середину инструкции:
ASSUME DS:NOTHING, SS:NOTHING, ES:NOTHING
ENTER_DR_ASSIST kit3_a, kit3_t, NoAbiosAssist
align dword
public _KiTrap03
_KiTrap03 proc
push 0 ; push dummy error code
ENTER_TRAP kit3_a, kit3_t
cmp ds:_PoHiberInProgress, 0
jnz short kit03_01
lock inc ds:_KiHardwareTrigger ; trip hardware analyzer
kit03_01:
mov eax, BREAKPOINT_BREAK
; Handle INT 3 breakpoint.
;
; The trap is caused by a single byte INT 3 instruction. A
; BREAKPOINT exception with additional parameter indicating
; READ access is raised for this trap if previous mode is user.
;
; Arguments:
;
; At entry, the saved CS:EIP point to the instruction immediately
; following the INT 3 instruction.
; No error code is provided with the error.
;
; Return value:
;
; None
.errnz (EFLAGS_V86_MASK AND 0FF00FFFFh)
test byte ptr [ebp]+TsEFlags+2,EFLAGS_V86_MASK/010000h
jnz kit03_30 ; fault occured in V86 mode => Usermode
.errnz (MODE_MASK AND 0FFFFFF00h)
test byte ptr [ebp]+TsSegCs,MODE_MASK
jz kit03_10
cmp word ptr [ebp]+TsSegCs,KGDT_R3_CODE OR RPL_MASK
jne kit03_30
kit03_05:
sti
kit03_10:
http://cracklab.ru/faq/Int3
http://cracklab.ru/faq/Int3
Physics Faculty, Electronic Computing Devices & Systems, 7th semester,2011 Dr.Mokhovikov Alexander Yurievich
Системные флаги и поле IOPL
Передачи управления между программами ограничиваются только текущим кольцом защиты.
В то же время в процессе выполнения любой программы необходимо обращаться к программам, находящимся на более высоком уровне привилегий, например, к драйверам или СУБД.
Для этих целей используются специально установленные точки входа в эти программы (шлюзы).
● Передача управления на более низкий уровень привилегий осуществляется с помощью механизма подчиненных сегментов.
http://www.intuit.ru/department/hardware/microarch/5/
Системные флаги и поле IOPL
Используется:
в программах для разрешения или запрета обработки внешнего маскируемого прерывания, приходящего по линии INTR магистрали.
● Когда флаг прерывания сброшен в 0, прерывания запрещены, т. е. запросы внешних маскируемых прерываний игнорируются.
На немаскируемые внешние прерывания, появляющиеся в линии NMI магистрали, и на программные прерывания флаг не влияет.
Флаг прерывания IF находится в девятом разряде регистра флагов.
В единичное состояние флаг устанавливается командой STI (Set Interrupt), в нулевое - командой CLI (Clear Interrupt).
Physics Faculty, Electronic Computing Devices & Systems, 7th semester,2011 Dr.Mokhovikov Alexander Yurievich
Программная модель процессора
Сегмент состояния задачи
Инструкция IRET:
Исключение работает аналогично прерыванию, но следом за содержимым EIP в ряде случаев в стек помещается также слово кода ошибки, которое должно быть извлечено обработчиком исключений.
Physics Faculty, Electronic Computing Devices & Systems, 7th semester,2011 Dr.Mokhovikov Alexander Yurievich
Программная модель процессора
Назначение системных флагов:
PE (Protect Enable):бит 0 — разрешение защищенного режима работы.
Состояние этого флага показывает, в каком из двух режимов — реальном (PE=0) или защищенном (PE=1) — работает микропроцессор в данный момент времени.
MP (Math Present), бит 1 — наличие сопроцессора. Всегда 1.
TS (Task Switched), бит 3 — переключение задач.
Процессор автоматически устанавливает этот бит при переключении на выполнение другой задачи.
AM (Aligment Mask), бит 18 — маска выравнивания.
Этот бит разрешает (AM = 1) или запрещает (AM = 0) контроль выравнивания.
CD (Cache Disable), бит 30, — запрещение кэш-памяти.
С помощью этого бита можно запретить (CD = 1) или разрешить (CD = 0) использование внутренней кэш-памяти (кэш-памяти первого уровня).
PG (PaGing), бит 31, — разрешение (PG = 1) или запрещение (PG = 0) страничного преобразования.
Флаг используется при страничной модели организации памяти.
Регистры(CR[0÷3]) хранят признаки состояния процессора, общие для всех задач.
INT 14h,
the serial communication interrupt
Регистр CR4 содержит биты
разрешения архитектурных расширений
При работе в защищенном режиме микропроцессора адресное пространство делится на:
● глобальное — общее для всех задач;
● локальное — отдельное для каждой задачи.
Разделением и объясняется присутствие в архитектуре микропроцессора следующих системных регистров:
регистра таблицы глобальных дескрипторов gdtr (Global Descriptor Table Register) имеющего размер 48 бит и содержащего 32-битовый (биты 16—47) базовый адрес глобальной дескрипторной таблицы GDT и 16-битовое (биты 0—15) значение предела, представляющее собой размер в байтах таблицы GDT;
регистра таблицы локальных дескрипторов ldtr (Local Descriptor Table Register) имеющего размер 16 бит и содержащего так называемый селектор дескриптора локальной дескрипторной таблицы LDT. Этот селектор является указателем в таблице GDT, который и описывает сегмент, содержащий локальную дескрипторную таблицу LDT;
16-битового регистра задачи TR(Task Register), который подобно регистру LDTR, содержит селектор, то есть указатель на дескриптор в таблице GDT.
Этот дескриптор описывает текущий сегмент состояния задачи (TSS — Task Segment Status).
Этот сегмент создается для каждой задачи в системе, имеет жестко регламентированную структуру и содержит контекст (текущее состояние) задачи.
Основное назначение сегментов TSS — сохранять текущее состояние задачи в момент переключения на другую задачу.
http://cracklab.ru/faq/Int3
http://sasm.narod.ru/apps/eflags/app_b.htm
http://club155.ru/x86cmd/POPF
http://kit-e.ru/articles/cpu/2006_9_148.php
http://de.ifmo.ru/--books/electron/cpu-cod.htm
http://www.viva64.com/ru/k/0035/
http://www.kailib.ru/arhitevm?start=23
http://www.zcub.ru/blog/org_comp_system/registry-processora.php
Основные используемые Интернет-ресурсы:
Книга «Архитектура ЭВМ»,автор Мюллер
Книга «Процессоры Pentium4, Athlon и Duron», авторы Михаил Гук, Виктор Юров
Книга «Архитектура ЭВМ», автор Танненбаум
Книга «Assembler. Учебник для ВУЗов», автор Юров
Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:
Email: Нажмите что бы посмотреть