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

Пароль



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

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

Таблица 2.27

Недействительные операции FPU и их результаты при маскировании (IM = 1)

Недействительная операция Результат при IM = 1
Любая арифметическая операция над SNaN или операндами с неподдерживаемыми форматами QNaN
Сложение ¥ с разными знаками или вычитание ¥ с одинаковым знаком Неопределенность (QNaN)
Умножение 0´¥, ¥´0 или деление ¥/¥, 0/0 Неопределенность (QNaN)
Сравнение или тестирование, если один или оба операнда NAN Устанавливает код условия «не сравнимы»
Операция вычисление остатка (команды FPREM, FPREM1), когда делитель равен 0 или делимое равно ¥ Неопределенность (QNaN) с установкой бита условия С2=1
Тригонометрические операции вычисления sin, cos, частичного tg (команды FCOS, FPTAN, FSIN, FSINCOS), когда операнд равен ¥ Неопределенность (QNaN) с установкой бита условия С2=1
Операция извлечения корня, вычисления функции log2x над отрицательными операндами вычисления, log2(х+1) над операндом х<-1 (команды FSQRT, FYL2X, FYL2XP1) Неопределенность (QNaN)
Операция пересылки в память целых и двоично-десятичных чисел и регистра данных FPU, если регистр пуст, содержит NaN или бесконечность либо его содержимое превышает диапазон представления адресуемой памяти (команды FIST, FISTP, FBSTP) Целочисленная неопределенность, код 100...00
Операция обмена содержимого регистров данных, если один из них или оба пусты (команда FXCH) Установка неопределенности (QNaN) для пустых регистров и последующий обмен

Если хотя бы один из признаков IE, DE, ZE, OE, UE, РЕ установлен в состояние «1» и не маскирован, то общий признак ошибки устанавливается в состояние ES = 1 и формируется сигнал ошибки FERR# = 0 на внешнем выводе процессора. Если в регистре управления CR0 установлено значение бита NE = 1, то в этом случае непосредственно перед следующей командой FPU реализуется исключение типа #MF («ошибка FPU»).

При значении NE = 0 процедура обработки прерывания вызывается командой INTn, формируемой внешним контроллером прерываний. Получив сигнал FERR#=0, этот контроллер должен подать сигнал IGNNE# = 1 на соответствующий вход процессора. Данный сигнал вызывает остановку процессора непосредственно перед следующей командой FPU или WAIT. Эта остановка продолжается до поступления от контроллера прерываний команды INTn. Если на входе IGNNE# поддерживается состояние «0», то процессор продолжает выполнение программы, игнорируя ошибки FPU.

Процедуры обслуживания исключений, вызываемых FPU, могут использовать для выявления причины ошибок содержимое регистров FIP и FDP - указателей команд и данных, которое выводится из процессора с помощью команд управления FSTENV, FSAVE. В регистр FIP заносится адрес текущей команды FPU и 11 разрядов ее кода (два первых байта без кода ESC), если эта команда не входит в группу команд управления. Если команда выбирает операнд из памяти, то в регистр FDP заносится адрес операнда, в противном случае разряды регистра устанавливаются в неопределенное состояние. Когда выполнение команды вызывает немаскированное прерывание вследствие возникновения какой-либо из вышеуказанных ошибок, регистры FIP и FDP содержат информацию об этой команде и операнде, которая может быть использована для анализа причин ошибки. Так как команды управления не изменяют содержимое FIP и FDP, то процедура обработки ошибок FPU с помощью этих команд может выбирать содержимое FIP, FDP для проведения такого анализа.

Необходимо отметить влияние битов ЕМ, TS, МР регистра управления CR0 на выполнение команд FPU и WAIT/FWAIT. При TS = 1 или ЕМ = 1 поступление команд FPU вызовет исключение типа #NM («FPU недоступен»). Команда WAIT/FWAIT вызывает это исключение только при TS = МР = 1.

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

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

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

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