- •Архитектура сопроцессора
- •Регистр состояния swr
- •Регистр управления cwr
- •Регистр тегов twr
- •Форматы данных
- •Двоичные целые числа
- •Упакованные целые десятичные (bcd) числа
- •Вещественные числа
- •Специальные численные значения
- •Денормализованные вещественные числа
- •Значение бесконечность
- •Нечисла
- •Неподдерживаемые форматы
Значение бесконечность
Сопроцессор имеет средства для представления значения бесконечность. Это значение формируется с помощью специальных битовых значений. Формат регистра стека сопроцессора, содержащего значение бесконечность, приведен на рис. 19.14.
Рис. 19.14. Представление значения бесконечность в регистре стека сопроцессора
Рисунок 19.14 демонстрирует, что значение бесконечность может иметь знак, при этом значения мантиссы и характеристики фиксированны. Именно в этом заключается отличие значения бесконечность от остальных специальных значений. Среди причин, приводящих к формированию значения бесконечность, можно выделить переполнение и деление на нуль. При формировании значения бесконечность в некотором регистре стека, в соответствующем теге регистра twr формируется специальное значение (10).
Нечисла
К нечислам относятся такие битовые последовательности в регистре стека сопроцессора, которые не совпадают ни с одним из рассмотренных выше форматов значений. Нечисло должно иметь единичную мантиссу и любую мантиссу, кроме 100...00, которая зарезервирована для значения бесконечность. Различают два тина нечисел:
SNAN (Signaling Noil a Number) — сигнальные нечисла;
QNAN (Quiet Non A Number) — спокойные (тихие) нечисла.
Сигнальное нечисло — битовое значение с единичным значением поля характеристики и мантиссы, первый бит которой, следующий за первым единичным значащим битом мантиссы, равен нулю (рис. 19.15, а). Сопроцессор реагирует на появление этого числа в регистре стека возбуждением исключения недействительная операция. Программисты могут формировать эти числа в регистре стека сопроцессора преднамеренно, например, для того чтобы искусственно возбудить в нужной ситуации указанное исключение. Очевидно, что именно но этой причине данные числа называются сигнальными. Если спять маску у флага недействительная операция в регистре cwr, то будет вызван обработчик, который выполнит заданные программистом действия.
Спокойное нечисло — битовое значение с единичным значением полей характеристики и мантиссой, первые два бита которой равны единице (рис. 19.15, б).
Сопроцессор самостоятельно не формирует сигнальных чисел, но в качестве реакции па определенные исключения он может формировать спокойные нечисла, например, нечисло вещественная неопределенность. Его значение показано на рис. 19.15, о. Вещественная неопределенность формируется как маскированная реакция сопроцессора на исключение недействительная операция (см. раздел «Исключения сопроцессора и их обработка» в конце урока). Другие спокойные нечисла могут формироваться после выполнения команд, в которых хотя бы один из операндов был спокойным нсчислом. Это может породить цепную реакцию, которая приведет к ошибочному результату. Поэтому в процессе вычислений рекомендуется периодически контролировать результаты исполнения команд на предмет появления спокойных нечисел.
При формировании нечисла в некотором регистре стека, в сооветствующем теге регистра twr формируется специальное значение (10).