Слово состояния процессора
OF — (флаг переполнения) если равен 1, то в результате операции происходит перенос в старший знаковый бит результата или заем из старшего знакового бита результата, если равен 0 — значение говорит об отсутствии переноса или заема. VIP — (флаг отложенного прерывания) устанавливается в 1 для индикации отложенного прерывания. Применяется при работе в режиме виртуального процессора i8086 совместно… Читать ещё >
Слово состояния процессора (реферат, курсовая, диплом, контрольная)
В данном проекте ССП является регистр CR0.
Описание флагов:
PE — состояние флага показывает то, в каком режиме работает процессор: 0 — в реальном, 1- в защищенном.
MP — указывает на наличие сопроцессора (всегда 1).
TS — переключение задач. Автоматически устанавливается при переключении на выполнение другой задачи.
AM — маска выравнивания. Если равен 1, то контроль выравнивания разрешен, 0 — запрещен.
CD — блокирование кэш-памяти. Если равен 1, то использование внутренней кэш-памяти разрешено, 0 — запрещено.
PG — 1 — разрешение страничного преобразования, 0 — запрет.
NW — разрешение сквозной записи (Используется в механизме расширения кэширования).
WP — защита записи. Страницы защищены от записи в режиме супервизора.
NE — разрешает механизм регистрации ошибок FPU;
ET — установлен равным 1.
EM — устанавливается при отсутствии сопроцессора (ЕМ=0).
Регистровая модель
Регистры процессора делятся на две части. К первой относятся внутренние регистры блоков обработки данных. В разрабатываемом процессоре есть два таких блока: блок с фиксированной точкой и блок с плавающей точкой. Каждый содержит регистровое запоминающее устройство (РЗУ).
- 1. Регистры общего назначения EAX/AX/AH/AL (регистр-аккумулятор применяется для хранения промежуточных данных), EBX/BX/BH/BL (базовый регистр задуман как место хранения базового адреса некоторого объекта в памяти), EDX/DX/DH/DL (регистр данных хранит промежуточные данные), ECX/CX/CH/CL (регистр-счетчик применяется в командах, производящих некоторые многократные действия), EBP/BP, ESI/SI, EDI/DI, ESP/SP предназначены для хранения данных и адресов, программист может их использовать (с определенными ограничениями) для реализации своих алгоритмов.
- 2. Сегментные регистры CS, DS, SS, ES, FS, GS служат для хранения значений, интерпретация которых зависит от режима работы процессора. В реальном режиме сегментные регистры содержат адрес параграфа начала сегмента в памяти. В защищенном режиме сегментные регистры хранят индекс входа в одну из системных таблиц дескрипторов — GDT или LDT.
- 3. Регистр указателя команд (instruction pointer register) EIP/IP имеет разрядность 32/16 бит и содержит смещение следующей подлежащей выполнению команды относительно начала сегмента кода. Этот регистр непосредственно недоступен программисту, то есть его нельзя указывать в качестве операнда команд. Но к нему возможен косвенный доступ, так загрузка и изменение его содержимого производятся в результате работы различных команд управления программным потоком, к которым относятся команды условных и безусловных переходов, вызова процедур и возврата из процедур. Возникновение прерываний также приводит к модификации содержимого регистра EIP/IP.
- 4. Регистр флагов (FLAG register) имеет разрядность 32/16 бит. Отдельные биты данного регистра имеют функциональное назначение и называются флагами. Младшая часть регистра EFLAGS/FLAGS полностью аналогична регистру FLAGS процессора i8086.
Описание флагов:
Флаги состояния:
CF — (флаг переноса) если равен 1, то арифметическая операция произвела перенос из старшего бита результата или в старший бит результата. Старшим является 7-й, 15-й или 31-й бит в зависимости от размерности операнда; если CF равен 0 — переноса не было. Этот флаг показывает условие переполнения для беззнаковой арифметики.
PF — (флаг четности) если равен 1, то 8 младших разрядов результата содержат четное число единиц; если равен 0 — среди 8 младших разрядов результата количество единиц нечетно.
AF — (вспомогательный флаг переноса) применяется только для команд, работающих с BCD-числами. Если равен 1 — в результате операции сложения был произведен перенос из разряда 3 в старший разряд или при вычитании был заем в разряд 3; если равен 0 — переносов и заемов в третий разряд (из третьего разряда) результата не было.
ZF — (флаг нуля) когда равен 1 — результат нулевой; когда равен 0 — результат ненулевой.
SF — (флаг знака) если равен 1, то старший бит результата равен 1; если равен 0 — старший бит результата также 0.
OF — (флаг переполнения) если равен 1, то в результате операции происходит перенос в старший знаковый бит результата или заем из старшего знакового бита результата, если равен 0 — значение говорит об отсутствии переноса или заема.
Системные флаги и поле IOPL:
TF — (флаг трассировки) предназначен для организации пошаговой работы процессора: если он равен 1 — процессор генерирует прерывание с номером 1 после выполнения каждой машинной команды; если равен 0 — обычная работа.
IF — (флаг прерывания) предназначен контроля аппаратных прерываний: когда он равен 1 — аппаратные прерывания разрешены; при равенстве 0 — аппаратные прерывания запрещены.
IOPL — (уровень привилегированности ввода-вывода) используется в защищенном режиме работы процессора для контроля доступа к командам ввода-вывода в зависимости от назначенного задаче приоритета.
NT — (флаг вложенности задачи) используется для индикации связи одной команды с другой.
RF — (флаг возобновления) применяется при обработке прерываний от регистров отладки.
VM — (флаг виртуального процессора 8086) признак текущего режима процессора: если он равен 1 — процессор функционирует в режиме виртуального процессора 8086; равенство 0 означает работу в реальном или защищенном режиме.
AC — (флаг контроля выравнивания) предназначен для разрешения контроля выравнивания при обращениях к памяти. Используется совместно с битом AM в Системном регистре CR0.
VIF — (флаг виртуального прерывания) при определенных условиях, является аналогом флага IF. Флаг VIF используется совместно с флагом VIP (при CR4. VME = 1).
VIP — (флаг отложенного прерывания) устанавливается в 1 для индикации отложенного прерывания. Применяется при работе в режиме виртуального процессора i8086 совместно с флагом VIF (при CR4. VME = 1). Может быть установлен только программно.
ID — (флаг поддержки идентификации процессора) используется для индикации поддержки процессором инструкции CPUID.
Флаг управления:
DF — (флаг направления) определяет направление обработки данных. Если равен 1, то обработка происходит от конца к началу, если равен 0 — от начала к концу.
- 5. 80-разрядные регистры сопроцессора R0 — R7 предназначены для написания программ, оперирующих данными с плавающей запятой;
- 6. Регистр управления FPSR (CWR)
PC = 00 — длина мантиссы 24 бита;
PC = 10 — длина мантиссы 53 бита;
PC = 11 — длина мантиссы 64 бита;
В данной задаче значение PC = 00.
RC используется для задания характера округления.
P — ошибка точности;
U — потеря точности;
O — переполнение;
Z — деление на ноль;
D — денормализованный операнд;
I — недействительная операция.
7. Регистр состояния FPCR (SWR).
SF — индикатор ошибки работы стека FPU, устанавливается в 1 если возникает PE, UE или IE;
ES — ошибка FPU (любая из шести исключительных операций);
С0-С3 — выполнение условия;
TOP — указатель текущей вершины стека;
PE — ошибка точности;
UE — потеря точности;
OE — переполнение;
ZE — деление на ноль;
DE — денормализованный операнд;
IE — недействительная операция.
8. Регистр тегов TW.
Состоит из двухбитовых полей.
Возможные значения полей TW:
- 00 — регистр занят допустимым ненулевым значением;
- 01 — нулевое значение в регистре;
- 10 — одно из специальных значений;
- 11 — в регистр можно производить запись (регистр пуст).
Регистры общего назначения (РОН) и регистры с плавающей точкой (РПТ) не могут использоваться для нужд процессора, они зарезервированы за пользователем системы.
В дополнение к РЗУ в процессоре аппаратно реализуется следующий ряд регистров.
- 1. Регистр оперативной памяти (РгЧтОП). Разрядность — 32. Хранит последнее прочитанное из ОП слово.
- 2. Регистр оперативной памяти (РгЗаОП). Разрядность — 32. Регистр адреса ОП (РгАОП). Разрядность — 18. Хранит адрес слова оперативной памяти.
- 3. Регистр команд (РгК). Разрядность — 48. Хранит текущую команду.