Мои Конспекты
Главная | Обратная связь


Автомобили
Астрономия
Биология
География
Дом и сад
Другие языки
Другое
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Металлургия
Механика
Образование
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Туризм
Физика
Философия
Финансы
Химия
Черчение
Экология
Экономика
Электроника

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



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

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

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

регистре состояния 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-2020 mykonspekts.ru Все права принадлежат авторам размещенных материалов.