Регистр управления. Регистр состояния. Регистр признаков. Адрес команды
Регистр управления
Регистр состояния
Регистр признаков
Указатель команды
Указатель операнда
Рис. 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 Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|