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


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

Немаскируемая обработка исключений



Как производить немаскируемую обработку исключений?Для этого необходимо

установить в ноль те флаги в регистре CWR,которые соответствуют интересующим

нас типам исключений.Далее нужно написать обработчик исключения,реализу-

ющий последовательность действий по корректировке ситуации,приведшей к ис-

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

исключения?Для ответа на него нужно разобраться с проблемой взаимодействия

процессора и сопроцессора при возникновении исключения.

В главе 2 мы упоминали о существовании группы системных регистров про-

цессора.В контексте нашего рассмотрения интерес представляет один из них —

регистр CRO.Он имеет несколько битов,имеющих отношение к сопроцессору

(табл.17.3).

Таблица 17.3.Биты CRO,имеющие отношение к сопроцессору

Положение

бита в CRO

Название

бита

МР (Math

Present)

Назначение

Сопроцессор присутствует.Бит должен быть

установлен в 1Положение

бита в CRO

Название

бита

ЕМ (Emulation

Math)

TS (Ta ^k

Switched)

ET (Extension

Type)

NE (Numeric

Error)

Назначение

Эмуляция сопроцессора.Когда ЕМ =1,выполнение

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

В программах для микропроцессосоров 18086...1386

это позволяло иметь альтернативные фрагменты кода

для выполнения одинаковых вычислений

с использованием команд сопроцессора (ЕМ =0)

и без них (ЕМ =1),то есть тогда,когда в конкретной

конфигурации компьютера сопроцессор отсутствует

Задача переключена.Бит предназначен для

согласования контекстов основного процессора

и сопроцессора.Бит TS устанавливается в единицу

при каждом переключении задачи.Состояние этого

бита проверяется процессором,если очередной

выбранной командой является команда сопроцессора.

Если бит TS установлен в единицу,то процессор

возбуждает исключение 7,обработчик которого

выполняет необходимые действия,возможно,

по сохранению или восстановлению контекста

вычислений с плавающей точкой.С битом TS

работает команда CLTS,которая устанавливает

значение этого бита в 0

Тип расширения.Единичное значение этого бита

означает поддержку инструкций сопроцессора

Численная ошибка.Бит определяет способ обработки

исключений сопроцессора:через сигнал внешнего

прерывания или путем генерации исключения

(см.далее)

Начиная с модели i486 процессор и сопроцессор размещаются в одном корпу-

се.Это упростило организацию взаимодействия между ними.Рассмотрим процес-

сы,протекающие в к эмпьютере при возникновении одного из шести перечислен-

ных ранее исключений сопроцессора.При возникновении ситуации исключения

сопроцессор устанавливает бит суммарной ошибки ES в регистре состояния SWR

и формирует на однс м из своих выходов сигнал ошибки.Этот сигнал ошибки од-

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

ние 10h,и в то же самое время,независимо от процессора,заводится на вход IRQ13

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

через вектор прерывания 75h [8 ].Таким образом,появление сигнала ошибки на

выходе сопроцессора приводит к генерации в основном процессоре двух исключе-

ний с номерами 10h я 75h.

Исключение 10п!является синхронным,так как вызов его обработчика санк-

ционируется процессором при выполнении команд WAIT/FWAIT.Данные команды

в процессорах i486 и Pentium встроены практически во все команды сопроцессора

за исключением некоторых команд управления,поэтому работа любой команды

сопроцессора начинается с выяснения того,было ли зафиксировано какое-нибудьиз незамаскированных исключений.Здесь важно то,что контекст вычислитель-

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

полностью сформированным (так как исключение синхронное,то есть ожидаемое)

и с ним можно корректно работать.

Если сигнал поступает на вход программируемого контроллера прерываний

IRQ13,то обработка исключения 75h может начаться в процессоре раньше,чем

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

в этом случае обработка прерывания является асинхронной к вычислительному

процессу.

Необходимо отметить влияние бита NE на процессы,протекающие в компьюте-

ре при возникновении исключения.Его состояние определяет стиль обработки

исключения процессором.Если бит NE =1,то процессор возбуждает исключение

16 (обработка в стиле 1286 и выше),если NE =0,то при возникновении исключения

процессор останавливается и ждет прерывания от программируемого контролле-

ра прерываний (обработка в стиле 18086).По умолчанию бит NE устанавливается в 0.

Если посмотреть на распределение прерываний в реальном и защищенном ре-

жимах,то необходимо обратить внимание на номер 7 вектора прерываний — обра-

щение к несуществующему сопроцессору.Прерывание появилось в процессоре 1286,

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

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

паратной конфигурации конкретного компьютера,писалось два варианта фраг-

ментов кода,на которых эти вычисления выполнялись,— один с использованием

команд сопроцессора и второй с использованием целочисленных команд.При рас-

познавании в потоке команд инструкций сопроцессора процессоры 1286 и 1386 про-

веряли бит эмуляции сопроцессора ЕМ (см.табл.17.3).Если он был равен 1,то

процессор возбуждал исключение 7.Это означало,что сопроцессора в конфигура-

ции компьютера нет и его функции должны эмулироваться командами целочис-

ленного устройства.Забота об установке бита ЕМ ложилась на системное программ-

ное обеспечение.

Для процессоров i486 и Pentium состояние вычислительной среды определяет-

ся состоянием регистров после выполнения команды FINIT и содержимым регист-

ра CRO (биты МР и NE).

Что должен делать обработчик исключений сопроцессора?Его действия зави-

сят от того,какое незамаскированное исключение им обрабатывается.Следует

отметить основные действия по обработке любого исключения.

1.Сохранение среды сопроцессора командой FSTENV.Это необходимо для после-

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

фиксировано состояние регистров управления сопроцессором при возникно-

вении исключения.

2.Сброс установленных битов исключений в регистре SWR для предотвращения

циклического возникновения исключений.

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

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

в регистре SWR должен определить их.Заметим,что содержимое SWR берется из

сохраненной при входе в процедуру по команде FSTENV среды сопроцессора.

Выполнение действий по корректировке ситуации.

5.Возвращение в прерванную программу (командой IRET).

Однако выяснить причину исключения мало,да это и несложно.Важно,испра-

вив ситуацию,вернуть управление прерванной программе.В защищенном режи-

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

ловушки,исключения.Это деление осуществляется в зависимости от того,какая

информация сохраняв тся о месте возникновения прерывания (исключения)и воз-

можности возобновления прерванной программы.Для сопроцессора ситуация ана-

логична.Здесь инфор мация о месте возникновения исключения зависит от типа

исключения.Так,для исключений недействительной операции,деления на ноль

и денормализованног(э операнда запоминается адрес команды,вызвавшей исклю-

чение.То есть ситуация для этих типов исключений распознается,и исключение

возбуждается до исполнения команды сопроцессора (по классификации для за-

щищенного режима -• это сбой).При этом операнды в стеке ив памяти не моди-

фицируются.Для остальных типов исключений ошибочная ситуация распознает-

ся после выполнения действий «виноватой » команды.Это означает,что в стеке

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

щей (после виновниц ы)команды программы.При этом операнды в памяти и в ре-

гистровом стеке,возможно,будут изменены.Ваши действия должны учитывать

эти особенности возникновения различных типов исключений.

i

!




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







©2015-2020 mykonspekts.ru Все права принадлежат авторам размещенных материалов.