Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка по ЭВМ и ПУ.doc
Скачиваний:
64
Добавлен:
16.03.2015
Размер:
1.16 Mб
Скачать

4.3.6.Недействительная операция.

Возникает, когда нет приемлемого результата в арифметической операции, операции сравнения или при стековых операциях (при этом флаг SF в регистре состояния равен единице):

при реализации операций сложения, вычитания, умножения и деления может возникнуть особый случай недействительной операции (например, при запрещенных операциях с бесконечностью);

- при реализации операции сравнения результатом является код условия. Обычно он показывает отношения “<”, “=”, “>”. Если при этом возникает особый случай недействительной операции (например, в проективном режиме при сравнении бесконечности и конечного числа, или при сравнении нечисла и конечного числа), то код условия принимает специальное значение “не сравнимы”. При этом нарушается закон трихотомии арифметики : . Это вызывает трудности в языках высокого уровня при исполнении оператора IF, так как, например, отрицанием условия больше или равно является не только меньше, но и “не сравнимы”;.

особый случай стека: переполнение, то есть попытка включения числа в заполненный стек или антипереполнение, то есть попытка извлечения числа из пустого стека;

Во всех случаях результатом недействительной операции будет нечисло (NAN).

Нечисло – это двоичное вещественное число, у которого в поле порядка все единицы, а в поле мантиссы - все, кроме значения, зарезервированного за бесконечностью, то есть 1.000000...0.

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

Особый случай нечисла - неопределенность. Сопроцессор формирует неопределенность как результат недействительной операции (остальные нечисла формируются программистом).

Для вещественных чисел неопределенность - это нечисло у которого в поле мантиссы две старшие цифры – единицы, а все остальные – нули (1.1...00), а поле порядка одни единицы (11...11). Поле знака также равно единице.

Для формата десятичных чисел неопределенность имеет следующее представление :

Знак

1

2

3

4

мусор

79

75 - 78

71 - 74

67 - 70

63 - 66

0 - 62

1

1111

1111

1111

1111

хх...хх

Десятичную неопределенность нельзя преобразовать в вещественное число, результат при этом - неопределенность.

Для двоичных целых форматов неопределенность представляется максимальным по модулю отрицательным числом, то есть имеет код

1

0000...00

Знак

Целочисленная неопределенность при преобразовании в формат с плавающей точкой дает обычное отрицательное число.

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

4.4.Регистры математического сопроцессора.

4.4.1.Численные регистры (регистровый стек).

Предназначен для выполнения вычислительных операций. Регистровый стек состоит из восьми регистров по 80 бит каждый, в которых представлены вещественные числа в расширенном формате. Адресация численных регистров реализована следующим образом: логический номер регистра, указанного в команде, процессор суммирует с содержимым поля ST (вершина стека) в регистре состояний. Сумма по модулю 8 определяет используемый численный регистр. Для удобства математических расчетов код и результат операции могут замещать значения операндов и использоваться дальше в вычислениях.

101

79

78

63

0

ST

5

R0

S

E

M

ST(3)

R1

ST(4)

в слове

R2

ST(5)

Состояния

R3

ST(6)

R4

ST(7)

R5

Вершина

ST(0) или ST

R6

ST(1)

R7

ST(2)

Числовой стек имеет кольцевую организацию. Если стек заполнен полностью, то есть ST = 111, то операция включения в стек вызывает перезапись в вершину стека ST = 000 ( при обработке особых случаев сопроцессора посредством обращения к системе пррываний центрального процессора) или особый случай недействительной операции (при формировании специальных значений в особых случаях сопроцессора).