Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Регистр управления. Регистр состояния. Регистр признаков. Адрес команды            




Регистр управления

 

13 – 11
B C3 ST C2 C1 C0 ES SF PE UE OE ZE DE IE

Регистр состояния

 

15 – 14 13 – 12 11 – 10 9 – 8 7 – 6 5 – 4 3 – 2 1 – 0
TAG0 TAG1 TAG2 TAG3 TAG4 TAG5 TAG6 TAG7

Регистр признаков

 

Код операции

X

Адрес команды

           

Указатель команды

 

 

XXXXXXXXXXXX

Адрес операнда

Указатель операнда

 

Рис. 6 Нечисловые регистры сопроцессора

Регистр управления

Биты 0 – 5 для всех сопроцессоров являются масками недействительных состояний. Если бит маски для какого-либо недействительного состояния, например переполнения – сброшен, то возникновение этого состояния вызывает прерывание центрального процессора. Если этот бит установлен, то прерывание не вырабатывается, а в качестве результата формируется особое значение (в рассматриваемом случае код бесконечности). Используются следующие маски особых случаев:

IM (Invalid Operation Mask) – маска недействительной операции;

DM (Denormalized Operand Mask) – маска денормализованного операнда;

ZM (Zero Divide Mask) – маска деления на нуль;

OM (Overflow Mask) – маска переполнения;

UM (Underflow Mask) – маска антипереполнения;

PM (Precision Mask) – маска особого случая при неточном результате.

В сопроцессорах 80287 и выше поля в битах 6 и 7 не используются. В сопроцессоре 8087 в поле 7 содержится маска недействительных прерываний IEM (Interrupt Enable Mask). Если IEM = 0, то прерывания центрального процессора не будет даже при возникновении незамаскированной ошибки.

Содержимое поля PC (Precision Control, биты 8 и 9) определяет точность вычислений в сопроцессоре:

11B – используется расширенная точность;

10B – результат округляется до двойной точности;

00B – результат округляется до одинарной точности.

Двухбитовое поле RC (Rounding Control, биты 10 и 11) определяет режим округления при выполнении операций с вещественными числами:

00B – производится округление к ближайшему представимому числу. Этот режим устанавливается при инициализации сопроцессора;

01B – производится округление в направлении к отрицательной бесконечности;

10B – производится округление в направлении к положительной бесконечности;

11B – производится округление в направлении к нулю.

В сопроцессорах 8087 и 80287 содержимое бита 12 (IC – Infinity Control) предназначено для управления трактовкой понятия бесконечности. Данные сопроцессоры могут работать в двух режимах – проективном (IC = 0) и аффинном (IC = 1). В проективном режиме существует только одна бесконечность, которая не имеет знака. В аффинном режиме определено две бесконечности: положительная и отрицательная. В этом режиме допускается выполнение арифметических операций с бесконечностями. Сопроцессоры 80387 и выше работают только в режиме аффинной арифметики.

После инициализации сопроцессора командой FINIT в регистре управления устанавливается режим работы с расширенной точностью и округления к ближайшему представимому числу. Все биты масок обработки особых случаев устанавливаются в 1, следовательно, все особые случаи будут замаскированы.

 

Регистр состояния

Биты 0 – 5 для всех сопроцессоров являются признаками (флагами) особых случаев Они устанавливаются при возникновении следующих ошибок:

IE (Invalid Operation) – недействительная операция;

DE (Denormalized Operand) – денормализованный операнд;

ZE (Zero Divide) – деление на нуль;

OE (Overflow) – переполнение;

UE (Underflow Mask) – антипереполнение;

PE (Precision Mask) – потеря точности.

При возникновении прерывания от сопроцессора при помощи этих флагов можно определить, какой особый случай вызвал возникновение прерывания.

Бит 6 содержит флаг ошибки стека SF (Stack Fault). Этот флаг устанавливается сопроцессором при возникновении переполнения или антипереполнения стека. Переполнение стека возникает в том случае, если стек полностью заполнен при попытке записи в него очередного значения. Антипереполнение стека возникает в том случае, если при попытке вытолкнуть значение из стека он оказывается пустым. Флаг SF сбрасывается только при непосредственной записи значения в регистр состояния.

Бит 7 содержит флаг суммарной ошибки ES (Summary Error), который устанавливается при возникновении любого незамаскированного особого случая, т. е. установке любого из битов 0 – 5 регистра состояния. Это справедливо для сопроцессоров 80287 и выше. Для сопроцессора 8087 бит 7 содержит флаг IR (Interrupt Request) запроса прерывания при возникновении незамаскированного особого случая.

Биты C0, C1, C2 и C3 (Condition Code) – коды условий. Они устанавливаются по результатам выполнения команд сравнения и команд нахождения остатка.

В поле ST (Stack Pointer) содержится номер числового физического регистра, являющегося вершиной стека.  

Бит занятости B (Busy) устанавливается, если сопроцессор выполняет команду или происходит прерывание от основного процессора. Если сопроцессор свободен, то бит занятости сбрасывается.

При инициализации сопроцессора все флаги, за исключением ST и ES (значения которых не определены) сбрасываются.

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...