Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

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




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

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

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

регистре состояния 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 говорит о том,что в команде встретился неверный

операнд.

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

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

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

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

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

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

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

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

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

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

Деление на ноль

Исключение деления на ноль возникает в командах,которые явно или неявно вы-

полняют деление.Э

ния сопроцессора 5

управления CWR.ME

о команда FDIV и ее варианты — FYL2X и FXTRACT.Факт возник-

новения этого исключения фиксируется флагом ZE (Zero Divide)регистра состоя-

WR и при необходимости маскируется битом ZM регистра

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

вании результата в ^иде знаковой бесконечности.

j

Денормализация операнда

Исключение денор ^ализованного операнда возникает,когда команда пытается

выполнить операциЬ с денормализованным операндом.При этом устанавливает-

ся флаг DE (Denorma|lized Operand),который маскируется битом DM регистра управ-

ления CWR.Если это исключение замаскировано,то его возникновение приводит

только к установке [флага DE,после чего сопроцессор нормализует операнд и вы-

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

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

ляет произвести нефбходимую обработку ситуации. Переполнение и антипереполнение

Ситуации переполнения и антипереполнения возникают в случаях,когда порядок

результата слишком велик или слишком мал для формата приемника.При воз-

никновении этих исключений в регистре SWR устанавливаются флаги ОЕ (Overflow)

HUE (Underflow).Эти исключения маскируются битами ОМ и UM регистра управ-

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

манд,преобразующих формат операндов,таких как FST.

Маскированная реакция для ситуации переполнения состоит в формировании

граничных (максимальных или минимальных)значений,представимых в сопро-

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

Немаскированная реакция на возникновение этих исключений зависит от того,

где должен формироваться результат.Если приемник — память,то мантисса ре-

зультата округляется,а порядок приводится к середине своего диапазона.Если

приемник — ячейка памяти,то значение в ней не запоминается,при этом не изме-

няется и содержимое регистра стека.

Неточный результат

Исключение неточного результата возникает в случае,когда результат работы ко-

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

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

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

округление,можно судить по значению бита С1:

II если С1 =0,то результат был усечен;

ш если С1 =1,то результат был округлен в большую сторону.

При возникновении этих исключений в регистре SWR устанавливаются флаг РЕ

(Precision).Исключение маскируется битом РМ регистра управления CWR.

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...