Исключения сопроцессора и их обработка

Важной особенностью сопроцессора является возможность распознавания особых

ситуаций,которые могут возникать в процессе вычислений.При этом сопроцес-

сор формирует определенные управляющие сигналы и устанавливает бит в своем

регистре состояния SWR.Согласно идеологии IA-32,прерывания классифициру-

ются по источникам возникновения.Один из возможных типов прерываний —

исключения,которые являются внутренними прерываниями процессора,возника-

ющими в ходе вычислительного процесса.Особые ситуации,возникающие в со-

процессоре,полностью соответствуют определению понятия «исключение ».

В сопроцессоре могут возникать шесть типов исключений.Все они были пере-

числены при обсуждении форматов регистра состояния SWR и регистра управле-

ния CWR.Вспомним основные моменты.В регистре состояния SWR 6 битов,каждый

из которых играет роль флага для определенного типа исключения.При возник-

новении исключения устанавливается соответствующий флаг в этом регистре (см.

рис.17.2).Сопроцессор аппаратно позволяет запретить явную обработку любого

из этих типов исключений.Для этого в регистре управления CWR есть 6 битов,игра-

ющих роль масок,установка которых и позволяет запретить возникновение соот-

ветствующих исключений.Важно отметить,что запрещение обработки исключе-

ния вовсе не означает того,что сопроцессор оставляет вычислительную ситуацию

неизменной.При возникновении исключения,имеющего единичное состояние

соответствующего бита в регистре CWR,сопроцессор выполняет так называемую

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

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

невозможно было предусмотреть все потребности программистов,которым,по-

мимо всего прочего,могут понадобиться и нестандартные варианты реакции на

исключения.В этом случае программисту необходимо установить соответствую-

щий бит в регистре CWR.О том,как нужно реагировать на возникновение незамас-

кированного исключения,мы поговорим чуть позже,а пока же разберемся с при-

чинами возникновения исключений и маскированными реакциями на них со

стороны сопроцессора.Эта информация может быть полезна для того,чтобы ра-

зобраться с логическими ошибками программы и правильно запрограммировать

реакцию на их возникновение.Недействительная операция

Причиной исключения недействительной операции являются ошибки в логике

программы,наиболее!типичные из которых следующие:

-загрузка операнда|в непустой регистр стека сопроцессора;

попытка извлечения операнда из пустого регистра стека сопроцессора;

использование операнда с недопустимым для данной операции значением.

При возникновении этого исключения устанавливается флаг IE (Invalid Opera-

tion)в регистре SWR (см.рис.17.2),маскируется оно битом IM регистра управления

сключение недействительной операции возникает при рабо-

крметических вычислениях.В каких именно операциях воз-

е,судят по содержимому бита SF (Stack Fault — ошибка сте-

CWR (см.рис.17.4).И

те со стеком и при ар:

никло это исключеш

ка)регистра состояния SWR.Если он установлен в единицу,это говорит о том,что

исключение было вызвано ошибкой в работе стека сопроцессора;напротив,ну-

левое состояние би-fa SF говорит о том,что в команде встретился неверный

операнд.

Маскированная реакция на исключение недействительной операции зависит

от причины ошибки.Если она возникла в результате некорректной работы стека,

то сопроцессор перезаписывает содержимое того регистра стека,обращение к ко-

торому вызвало исключение.При перезаписи в него заносится специальное чис-

ленное значение — сцокойное нечисло.Если ошибка возникла в результате недо-

пустимого операнда ] то в большинстве ситуаций в регистре стека сопроцессора

возвращается также ^покойное нечисло.

Кстати,исключен ие недействительной операции — это единственное исключе-

ние,которое не нужно маскировать.Программисту следует самому вмешиваться

в обработку ошибочных ситуаций путем вызова соответствующего обработчика.








Дата добавления: 2015-04-15; просмотров: 998;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.006 сек.