На главную
Подписка
Новости










Главная / MS-DOS / MS-DOS. РУКОВОДСТВО РАЗРАБОТЧИКА / Глава 10 / Обработка особых ситуаций в NPX Сделать домашней страницей Добавить в избранное Написать писмо

НАЗАД СОДЕРЖАНИЕ ВПЕРЁД

Обработка особых ситуаций в NPX

Младший байт слова состояния содержит флаги особых ситуаций. Эти флаги соответствуют маскам ситуаций в слове управления. Когда имеет место особая ситуация, NPX устанавливает соответствующий флаг и затем проверяет, замаскирована эта ситуация или нет. Так как большинство операций применяют замаскированный ответ (внутренние обработчики прерываний NPX), мы свели их действие в таблицу 10-6. Не забывайте о периодической проверке на наличие особых ситуаций в целях обеспечения точности результатов. Если имеется особая ситуация, то устанавливается соответствующий флаг и стоит до тех пор, пока он не будет сброшен посредством инициализации NPX (команда FINIT) или путем использования команды сброса ситуации FCLEX. Так как флаги остаются установленными, они обеспечивают кумулятивную запись любых ошибок, возникающих в процессе обработки.


Другой способ обработки особых ситуаций заключается в размаскировании одной или более ситуаций и разрешении прерываний в слове управления NPX. В этом режиме, если NPX обнаруживает особую ситуацию, он сигнализирует прерыванием и требует, чтобы главный центральный процессор обработал ситуацию. Тем не менее, NPX не всегда связан с линией запроса прерывания центрального процессора! Для размещения запросов прерываний NPX требуется внешняя схема обработчика прерываний. Если Ваша система не поддерживает внешние прерывания NPX, то не разрешайте их!


Если Ваша система поддерживает внешние прерывания и Вы разрешили их, то необходимо обеспечить обработчик особых ситуаций, в то время, когда NPX прерывает работу главного центрального процессора. Для определения причины возникшей проблемы программа центрального процессора должна прочитать слово состояния NPX. Если Вы потребуете, то Ваш обработчик ситуаций тоже может определить команду и операнд, приведшие к возникновению проблемы, путем исследования указателей команды и операнда NPX. Для получения этой информации обработчик ситуаций должен выполнить одну из команд NPX, FSTENV или FSAVE. Эти команды записывают в память главного центрального процессора по меньшей мере содержание пяти регистров управления NPX (слово состояния, слово управления, слово признака, указатель команды и указатель операнда). Обработчик ситуаций может восстановить информацию из памяти и обработать ее. Если Вы хотите получить более полное представление об этих регистрах, то изучите листинг 10-1 раздела "Примеры программирования NPX с помощью MASM", содержащий пример программы, которая сначала сохраняет эту информацию, а затем декодирует ее.


   Таблица 10-6

     Установленные по умолчанию ответы на
 особые ситуации NPX. (Ситуации замаскированы)
њњњњњњњњњњњњњњњњњњњњњљњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњ
   Особая ситуация   ‹Замаскированный ответ
њњњњњњњњњњњњњњњњњњњњњќњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњ
Точность    ‹  Возвращает округленный результат
Потеря значимости    ‹  Денормализованный результат
Переполнение‹  Возвращает бесконечность со знаком
Деление на ноль      ‹  Возвращает бесконечность со знаком
.  ‹  операнда
њњњњњњњњњњњњњњњњњњњњњљњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњ
   Особая ситуация   ‹ Замаскированный ответ
њњњњњњњњњњњњњњњњњњњњњќњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњ
Денормализованный    ‹  Если операнд памяти, то игнорируется
операнд     ‹  Если операнд регистра, то переводит в
.  ‹  "ненормализованное" и оценивает снова
Неверная операция    ‹  Если один операнд NAN, то возвращает
.  ‹  его. Если оба операнда NAN, то возвра-
.  ‹  щает тот,  который имеет большее абсо-
.  ‹  лютное значение. Если ни один из опе-
.  ‹  рандов не является NAN, то возвращает
.  ‹  неопределенность
њњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњњ

НАЗАД СОДЕРЖАНИЕ ВПЕРЁД

Hosted by uCoz