Дипломированных специалистов «Информатика и вычислительная техника»



Download 12,06 Mb.
Pdf ko'rish
bet267/357
Sana22.02.2022
Hajmi12,06 Mb.
#115195
TuriДиплом
1   ...   263   264   265   266   267   268   269   270   ...   357
Bog'liq
assembler uchebnik dlya vuzov 2-e izd YuRXUW1

Переполнение и антипереполнение
Ситуации переполнения и антипереполнения возникают в случаях, когда порядок
результата слишком велик или слишком мал для формата приемника. При воз-
никновении этих исключений в регистре SWR устанавливаются флаги ОЕ (Overflow)
(Underflow). Эти исключения маскируются битами ОМ и UM регистра
ления CWR. Исключения могут возникнуть при работе арифметических команд и ко-
манд, преобразующих формат операндов, таких как FST.
Маскированная реакция для ситуации переполнения состоит в формировании
граничных (максимальных или минимальных) значений,
в сопро-
цессоре, или специального численного значения в виде знаковой бесконечности.
Немаскированная реакция на возникновение этих исключений зависит от того,
где должен формироваться результат. Если приемник — память, то мантисса ре-
зультата округляется, а порядок приводится к середине своего диапазона. Если
приемник — ячейка памяти, то значение в ней не запоминается, при этом не изме-
няется и содержимое регистра стека.
Неточный результат
Исключение неточного результата возникает в случае, когда результат работы ко-
манды нельзя точно представить в формате приемника и его приходится округ-
лять. Например, вычисление любой периодической дроби вроде 1/3 будет приво-
дить к возникновению такого типа исключения. В какую сторону произошло
можно судить по значению бита С1:
если С1 = 0, то результат был усечен;
если С1 = 1, то результат был округлен в большую сторону.
При возникновении этих исключений в регистре
устанавливаются флаг РЕ
(Precision). Исключение маскируется битом РМ регистра управления CWR.
Немаскируемая обработка исключений
Как производить немаскируемую обработку исключений? Для этого необходимо
установить в ноль те флаги в регистре CWR, которые соответствуют интересующим
нас типам исключений. Далее нужно написать обработчик исключения, реализу-
ющий последовательность действий по корректировке ситуации, приведшей к ис-
ключению. Неясным остается вопрос о том, как передать управление обработчику
исключения? Для ответа на него нужно разобраться с
взаимодействия
процессора и сопроцессора при возникновении исключения.
В главе 2 мы упоминали о существовании группы системных регистров про-
цессора. В контексте нашего рассмотрения интерес представляет один из них —
регистр CRO. Он имеет несколько битов, имеющих отношение к сопроцессору
(табл. 17.3).
Таблица
Биты CRO, имеющие отношение к сопроцессору
Положение
бита в CRO
1
Название
бита
МР (Math
Present)
Назначение
Сопроцессор присутствует. Бит должен быть
установлен в 1


Исключения сопроцессора и их обработка 503
Положение
бита в CRO
2
3
4
5
Название
бита
ЕМ
Math)
TS
ET
Type)
NE (Numeric
Назначение
Эмуляция сопроцессора. Когда ЕМ 1, выполнение
любой команды сопроцессора вызывает исключение 7.
В программах для микропроцессосоров
это позволяло иметь альтернативные фрагменты кода
для выполнения одинаковых вычислений
с использованием команд сопроцессора (ЕМ 0)
и без них (ЕМ =
то есть тогда, когда в конкретной
конфигурации компьютера сопроцессор отсутствует
Задача переключена. Бит предназначен для
согласования контекстов основного процессора
и сопроцессора. Бит TS устанавливается в единицу
при каждом переключении задачи. Состояние этого
бита проверяется процессором, если очередной
выбранной командой является команда сопроцессора.
Если бит TS установлен в единицу, то процессор
возбуждает исключение 7, обработчик которого
выполняет необходимые действия, возможно,
по сохранению или восстановлению контекста
вычислений с плавающей точкой. С битом TS
работает команда CLTS, которая устанавливает
значение этого бита в 0
Тип расширения. Единичное значение этого бита
означает поддержку инструкций сопроцессора
Численная ошибка. Бит определяет способ обработки
исключений сопроцессора: через сигнал внешнего
прерывания или путем генерации исключения
(см. далее)
Начиная с модели i486 процессор и сопроцессор размещаются в одном корпу-
се. Это упростило организацию взаимодействия между ними. Рассмотрим процес-
сы, протекающие в
при возникновении одного из шести перечислен-
ных ранее
сопроцессора. При возникновении ситуации исключения
сопроцессор устанавливает бит суммарной ошибки ES в регистре состояния SWR
и формирует на однс м из своих выходов сигнал ошибки. Этот сигнал ошибки од-
новременно
самим
который генерирует исключе-
ние 10h, и в то же самое время, независимо от процессора, заводится на вход
программируемого контроллера прерываний, обработчик которого вызывается
через вектор прерывания 75h [8]. Таким образом, появление сигнала ошибки на
выходе сопроцессора приводит к генерации в основном процессоре двух исключе-
ний с номерами
я 75h.
Исключение
синхронным, так как вызов его обработчика санк-
ционируется
при выполнении команд
Данные команды
в процессорах i486 и Pentium встроены практически во все команды сопроцессора
за исключением некоторых команд управления, поэтому работа любой команды
сопроцессора начинается с выяснения того, было ли зафиксировано какое-нибудь


504 Глава 17. Архитектура и программирование сопроцессора
из незамаскированных исключений. Здесь важно то, что контекст вычислитель-
ной ситуации после выполнения
вызвавшей исключение, оказывается
полностью сформированным (так как исключение синхронное, то есть ожидаемое)
и с ним можно корректно работать.
Если сигнал поступает на вход программируемого контроллера прерываний
IRQ13, то обработка исключения 75h может начаться в процессоре раньше, чем
в сопроцессоре закончит выполняться команда, вызвавшая исключение, то есть
в этом случае обработка прерывания является асинхронной к вычислительному
процессу.
Необходимо отметить влияние бита
на процессы, протекающие в компьюте-
ре при возникновении исключения. Его состояние определяет стиль обработки
исключения процессором. Если бит NE = 1, то процессор возбуждает исключение
16 (обработка в стиле
и выше), если NE = 0, то при возникновении исключения
процессор останавливается и ждет прерывания от программируемого контролле-
ра прерываний (обработка в стиле
По умолчанию бит
устанавливается в 0.
Если посмотреть на распределение прерываний в реальном и защищенном ре-
жимах, то необходимо обратить внимание на номер 7 вектора прерываний — обра-
щение к несуществующему сопроцессору. Прерывание появилось в процессоре
для которого сопроцессор не являлся обязательным устройством. Для того чтобы
программа, выполняющая математические вычисления, была независимой от ап-
паратной конфигурации конкретного компьютера, писалось два варианта фраг-
ментов кода, на которых эти вычисления выполнялись, — один с использованием
команд сопроцессора и второй с использованием целочисленных команд. При рас-
познавании в потоке команд инструкций сопроцессора процессоры
и
про-
веряли бит эмуляции сопроцессора ЕМ (см. табл. 17.3). Если он был равен 1, то
процессор возбуждал исключение 7. Это означало, что сопроцессора в конфигура-
ции компьютера нет и его функции должны эмулироваться командами целочис-
ленного устройства. Забота об установке бита ЕМ ложилась на системное программ-
ное обеспечение.
Для процессоров i486 и Pentium состояние вычислительной среды определяет-
ся состоянием регистров после выполнения команды FINIT и содержимым регист-
ра CRO (биты МР и NE).
Что должен делать обработчик исключений сопроцессора? Его действия зави-
сят от того, какое незамаскированное исключение им обрабатывается. Следует
отметить основные действия по обработке любого исключения.
1. Сохранение среды сопроцессора командой
Это необходимо для после-
дующего выяснения причин исключения, а в среде сопроцессора как раз и за-
фиксировано состояние регистров управления сопроцессором при возникно-
вении исключения.
2. Сброс установленных битов исключений в регистре SWR для предотвращения
циклического возникновения исключений.
3. Выяснение типа исключения. Если незамаскированными являются исключе-
ния нескольких типов, то обработчик путем анализа соответствующих битов
в регистре SWR должен определить их. Заметим, что содержимое
берется из
сохраненной при входе в процедуру по команде FSTENV среды сопроцессора.


 отладчика 505
4. Выполнение
по корректировке ситуации.
5. Возвращение в
программу (командой IRET).
Однако выяснить причину исключения мало,
это и несложно. Важно, испра-
вив ситуацию, вернуть управление прерванной программе. В защищенном режи-
ме работы процессора прерывания (исключения) делятся на несколько групп: сбои,
ловушки, исключения. Это деление осуществляется в зависимости от того, какая
информация
тся о месте возникновения прерывания (исключения) и воз-
можности
прерванной программы. Для сопроцессора ситуация ана-
логична. Здесь инфор мация о месте возникновения исключения зависит от типа
исключения. Так, для исключений недействительной операции, деления на ноль
и
операнда запоминается адрес команды, вызвавшей исклю-
чение. То есть
для этих типов исключений распознается, и исключение
возбуждается до исполнения команды сопроцессора (по классификации для за-
щищенного режима -• это сбой). При этом операнды в стеке
памяти не моди-
фицируются. Для
типов исключений ошибочная ситуация распознает-
ся после выполнения действий «виноватой» команды. Это означает, что в стеке
в качестве адреса
возникновения исключения запоминается адрес
щей (после виновниц
команды программы. При этом операнды в памяти и в ре-
гистровом стеке, возможно, будут изменены. Ваши действия должны учитывать
эти особенности возникновения различных типов исключений.
i
!

Download 12,06 Mb.

Do'stlaringiz bilan baham:
1   ...   263   264   265   266   267   268   269   270   ...   357




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish