Скачиваний:
57
Добавлен:
16.04.2013
Размер:
349.18 Кб
Скачать

5.1.3. Представление значений в регистрах с плавающей точкой

Коды в регистрах с плавающей точкой сгруппированные в классы и подклассы перечислены ниже, в табл. 5.2 (затененные коды не поддерживаются). Последние две строки таблицы содержат значения констант записанных в регистрах с плавающей точкой FR0 иFR1. Значение константы вFR1 не изменяется для параллельных инструкций с одинарной точностью или для инструкций целочисленного умножения с накоплением.

Табл.5.2. Коды в регистрах с плавающей точкой

Классы или подклассы

Знак (1 бит)

Смещенный порядок (17 бит)

Мантисса i.bbbb (64 бита)

NaN(не числа)

0/1

0x1FFFF

от 1.000…01 до 1.111…11

Тихие (Quiet)NaN

0/1

0x1FFFF

от 1.100…00 до 1.111…11

Неопределенность - тихий NaNa

1

0x1FFFF

1.100…00

Сигнальные NaN

0/1

0x1FFFF

от 1.000…01 до 1.011…11

Бесконечность

0/1

0x1FFFF

1.000…00

Псевдо- NaN

0/1

0x1FFFF

от 0.000…01 до 0.111…11

Псевдо- неопределенность

0/1

0x1FFFF

0.000…00

Нормализованные числа (в нормализованном формате регистра с плавающей точкой)

0/1

от 0x00001 до 0x1FFFE

от 1.000…00 до 1.111…11

Целые, либо параллельные FP(большие без знака или отрицательные целые)

0

0x1003E

от 1.000…00 до 1.111…11

Целочисленная неопределенностьb

0

0x1003E

1.000…00

IEEEнормализованные вещественные числа с одинарной точностью

0/1

от 0x0FF81 до 0x1007E

от 1.000…00…(40)нулей до 1.111…11…(40)нулей

IEEEнормализованные вещественные числа с двойной точностью

0/1

от 0x0FC01 до 0x103FE

от 1.000…00…(11) нулей до 1.111…11…(11) нулей

IEEEнормализованные вещественные числа с двойной расширенный точностью

0/1

от 0x0C001 до 0x13FFE

от 1.000…00 до 1.111…11

Обычные числа с тем же значением, что и псевдо-денормализованные двойные расширенные вещественные числа

0/1

от 0x0C001

от 1.000…00 до 1.111…11

Стековые нормализованные одинарные IA-32 (делается, когда модель вычисл-ий – это стекIA-32 с одинарной точностью)

0/1

от 0x0C001 до 0x13FFE

от 1.000…00…(40) нулей до 1.111…11…(40) нулей

Стековые нормализованные двойные IA-32 (делается, когда модель вычислений – это стекIA-32 с двойной точностью)

0/1

от 0x0C001 до 0x13FFE

от 1.000…00…(11) нулей до 1.111…11…(11) нулей

Не нормализованные числа (в формате регистра с плавающей точкой)

0/1

0x00000

от 0.000…01 до 1.111…11

от 0x00001 до 0x1FFFE

от 0.000…01 до 0.111…11

от 0x00001 до 0x1FFFD

0.000…00

1

0x1FFFE

0.000…00

Целые (положительные знаковые или без знака) либо параллельные FP

0

0x1003E

от 0.000…00 до 0.111…11

IEEEденормализованные с одинарной точностью вещественные числа

0/1

0x0FF81

от 0.000…01…(40)нулей до 0.111…11…(40)нулей

IEEEденормализованные с двойной точностью вещественные числа

0/1

0x0FC01

от 0.000…01…(11) нулей до 0.111…11…(11) нулей

Денормализованный формат регистра

0/1

0x00001

от 0.000…01 до 0.111…11

Не нормализованные числа с тем же значением, что и денормализованные двойные расширенные вещественные числа

0/1

0x0C001

от 0.000…01 до 0.111…11

Денормализованные двойные расширенные вещественные числа

0/1

0x00000

от 0.000…01 до 0.111…11

Стековые денормализованные одинарные IA-32 (делается, когда модель вычисл-ий – это стекIA-32 с одинарной точностью)

0/1

0x00000

от 0.000…01…(40)нулей до 0.111…11…(40)нулей

Стековые денормализованные двойные IA-32 (делается, когда модель вычисл-ий – это стекIA-32 с двойной точностью)

0/1

0x00000

от 0.000…01…(11) нулей до 0.111…11…(11) нулей

Псевдо-денормализованные двойные расширенные вещественные числа (формат IA-32 стека и памяти)

0/1

0x00000

от 1.000…00 до 1.111…11

Псевдо нули

0/1

от 0x00001 до 0x1FFFD

0.000…00

1

0x1FFFE

0.000…00

NaTValc

0

0x1FFFE

0.000…00

Ноль

0/1

0x00000

0.000…00

FR0 (положительный ноль)

0

0x00000

0.000…00

FR1 (положительная единица)

0

0x0FFFF

1.000…00

a. Создается при маскировании ошибочной вещественной операции.

b. Создается при маскировании ошибочной целочисленной операции.

c. Создается при не успешной спекулятивной операции с памятью.

Все коды регистров могут быть использованы, как исходные значения арифметических операций. В большинстве случаев, значение, вычисленное в результате арифметической операции, представлено в нормализованном регистровом формате, где порядок находится в диапазоне от EmaxдоEminсоответствующих приемнику, а мантисса имеет значащие биты, соответствующие приемнику. Вычисленные значения типа нулей, бесконечностей и значенийNaN, которые выходят за эти границы, представлены соответствующими уникальными кодами формата регистра. Денормализованные двойные расширенные результаты отображаются в формате с порядком 0x00000 (вместо 0x0C001). Не поддерживаемые коды (псевдо-NaNи псевдо-бесконечности), псевдо-нули и псевдо- нормализованные двойного расширенного формата – никогда не получаются в результате арифметических операций.

В арифметических операциях псевдо-нули работают точно также как ноль со знаком, но есть одно исключение. Умножение псевдо-нуля на бесконечность возвращает корректное значение бесконечности со знаком, вместо вызова ошибки «Исключение недопустимой операции с плавающей точкой» (и возвращения QNaN). Кроме того, псевдо-нули относятся к классу ненормализованных чисел, а не к классу нулей.