Программная модель процессора IntelPentium (IA-32). Программная модель – Регистры. Прикладная модель CPU, страница 5

Этот случай может возникнуть во всех арифметических командах а также в командах пересылки в память FST(P), связанный с преобразованием в меньший формат.

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

5)  UE – Underflow Error (антипереполнение, исчезновение/потеря порядка).

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

Этот случай может иметь место во всех арифметических командах, а также трансцендентных командах и в командах пересылки в память FST(P) с уменьшением формата.

При маскировании особого случая результатом операции является денормализованное число или «0».

6)  PE – Precision Error (ошибка/потеря точности).

Особый случай PE возникает, если результат операции невозможно представить точно в формате приемника.

Этот случай возникает достаточно часто, например, если результатом операции является периодическая дробь.

Особый случай обычно маскируется и результат операции получается округлением в соответствии с заданным режимом, который задается полем RC(CW) в слове управления.

После округления бит C1(SW) признака результата в слове состояния показывает округлен ли неточный результат в большую сторону (C1 = 1) или в меньшую (C1 = 0).

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

7)  SF – Stack Fault (ошибка/нарушение стека).

8)  ES – Error Summary (суммарная ошибка).

Бит устанавливается при возникновении любого особого случая и участвует в формировании выходного сигнала FERR# (# означает что активным уровнем сигнала является низкий).

C3-C0 – код условия, похожи на арифметические флаги в регистре EFLAGS. Они фиксируют особенности результатов команд сравнения, проверки и анализа.

В отличие от арифметических флагов, арифметические команды FPU не оказывают влияния на коды условия за исключением бита C1. Этот бит в основном используется для фиксации вида ошибки при работе с регистровым стеком (IE=1 и SF=1).

В командах сравнения FCOM и её различных модификациях биты C3-C0 определяют результат сравнения операндов команды x с операндом из вершины стека:

C3

C0

ST(0)>x

ST(0)<x

ST(0)=x

0

0

1

0

1

0

Бит C2 в свою очередь определяет сравнимость операндов (C2=0) или их несравнимость (C2=1). Операнды являются несравнимыми, если один из них или оба являются нечислами. В этом случае фиксируется ошибка IE недействительности операции.

При использовании несравнимых операндов все 3 бита C3=C2=C0=1.

Команда проверки FTST выполняет сравнение содержимого вершины стека с нулем с установкой признака (C3, C2, C0) по тем же правилам, что и в командах сравнения (при x=0).

Команда анализа FXAM (eXamine) производит анализ содержимого ST(0) и устанавливает соответствующие значения битов C3-C0. В бите C1 фиксируется знак операнда, а значения остальных битов соответствуют следующему содержимому регистра ST(0):

C3

C2

C0

0

0

0

0

1

1

1

0

0

1

1

0

0

1

0

1

0

1

0

1

0

неподдерживаемый формат

NaN

нормализованное число

0

пустой регистр денормализованное число

9)  TOP (указатель вершины регистрового стека).

Крайний левый бит B (Busy), этот бит, включенный в состав слова состояния SW, исключается для совместимости с младшими моделями, в которых установка бита B означала выполнение операции в математическом сопроцессоре (Intel 8087, 80287, 80387). Начиная с модели i486, бит B фактически копирует значение бита ES.

Слово управления, CW

Младшие 6 бит этого слова содержат маски особых случаев («1» замаскировано, «0» - разрешено прерывание).

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