October 18 2017 12:23:11
Навигация
Авторизация
Логин

Пароль



Вы не зарегистрированы?
Нажмите здесь для регистрации .

Забыли пароль?
Запросите новый здесь.
Признак деления на нуль
ПРОЦЕССОРЫ ОБЩЕГО НАЗНАЧЕНИЯ И СИСТЕМЫ НА ИХ ОСНОВЕ

При выполнении операций FPU контролируется шесть видов ошибок:

1)   #I-недействительная операция;

2)   #D - поступление денормализованного операнда;

3)   #Z-деление на нуль;

4)   #O - переполнение;

5)   #U - антипереполнение;

6)   #Р - неточный результат.

При обнаружении ошибки устанавливается единичное значение соответствующего признака IE, DE, ZE, ОЕ, UE, РЕ в регистре состояний FPSR. В регистре управления FPCR содержатся маски этих ошибок IM, DM, ZM, ОМ, UM, РМ: при нулевом значении маски соответствующая ошибка вызовет прерывание программы (исключение), при единичном значении маски процессор продолжает выполнение программы.

Признак неточного результата РЕ = 1 устанавливается, если результат операции не может быть точно представлен в заданном командой формате. Если установлена маска РМ = 1, то процессор продолжает программу без прерывания. В этом случае производится округление результата в соответствии со значением поля RC в регистре FPCR (см. рис. 2.6).

Признак антипереполнения UE = 1 устанавливается, если результат слишком мал для представления нормализованным числом, т. е. меньше значений +Min для положительных или больше значений - Мах для отрицательных нормализованных чисел (см. табл. 2.26). Если установлена маска UM = 1, то процессор продолжает программу без прерывания, а результат представляется денормализованным числом.

Признак деления на нуль ZE = 1 устанавливается, когда делимое является конечным числом, отличным от нуля, а делитель равен нулю. Если установлена маска ZM = 1, то выполнение программы продолжается без прерывания, в качестве результата деления выдается код бесконечности. Знак результата определяется в зависимости от знаков операндов в соответствии с правилами деления.

Признак денормализованного операнда DE = 1 устанавливается, если денормализован хотя бы один из операндов. Если установлена маска DM =1, то процессор оперирует с денормализованным операндом, как с нормализованным.

Признак недействительной операции IЕ=1 устанавливается при извлечении содержимого из пустого регистра или загрузки в заполненный регистр, выполнении действий с не-числа-ми SNaN, QNaN, извлечении квадратного корня из отрицательного числа, делении L/L и ряде других операций, указанных в табл. 2.27. Если установлена маска IM = 1, то выполнение программы продолжается без прерывания, а результат недействительной операции определяется согласно табл. 2.27.

При выполнении операций FPU контролируется переполнение или антипереполнение арифметического стека. Переполнение фиксируется, если команда пытается произвести загрузку в заполненный регистр стека. При этом в регистре FPSR устанавливаются признак SF = 1 и бит условия С1 = 1. Антипереполнение фиксируется, если команда пытается считать операнд из пустого регистра стека. В этом случае устанавливаются значения SF = 1 и С1 = 0. Значение SF = 1 указывает на выполнение недействительной операции и вызывает установку признака 1Е=1. Если флаг IE маскирован (IM = 1), то результатом операций, вызвавших переполнение или антипереполнение стека, будет загрузка или считывание не-числа QNAN.

Комментарии
Нет комментариев.
Добавить комментарий
Пожалуйста, залогиньтесь для добавления комментария.
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, авторизуйтесьили зарегистрируйтесь для голосования.

Нет данных для оценки.

Время загрузки: 0.04 секунд 2,255,295 уникальных посетителей