Студопедия — Описание особых случаев
Студопедия Главная Случайная страница Обратная связь

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

Описание особых случаев






Далее приводится краткое описание действий процессора х86 при возникновении особых случаев [3].

Ошибка деления (0) — автоматически формируется, когда в команде div или idiv делитель равен нулю или частное слишком велико для получателя (AL/AX/EAX).

Отладка (1) — формируется в следующих случаях (может быть нарушением или ловушкой):

□ нарушение контрольной точки по адресу команд;

□ ловушка контрольной точки по адресу данных;

□ нарушение общей защиты;

□ ловушка покомандной работы (флаг TF=1);

□ ловушка контрольной точки по переключению задачи (в сегменте TSS бит T-1).

(Страница205)

Немаскируемое прерывание NMI (2) — единственное внешнее радиальное прерывание.

Контрольная точка (3) — формируется при выполнении команды INT3 (код операции — CCh). Передача управления обработчику особого случая является частью команды INT3, адрес возврата в стеке относится к началу следующей команды. Тот же обработчик вызывается при выполнении внешнего прерывания с вектором 03 или двухбайтовой команды int 03.

Переполнение (4) — возникает при выполнении команды into при условии установки в 1 флага переполнения OF. Как и для INT3, передача управления обработчику особого случая является частью команды into, адрес возврата в стеке относится к началу следующей команды. Обычно команда into применяется в компиляторах для выявления переполнения в арифметике знаковых чисел. Тот же обработчик вызывается при выполнении внешнего прерывания с вектором 04 или команды int 04.

Нарушение границы массива (5) — возникает при выполнении команды bound, если контрольная проверка дает отрицательный результат, т. е. проверяемый (первый) операнд не попадает в диапазон значений, определенных вторым (нижняя граница) и третьим (верхняя граница) операндами команды.

Недействительный код операции (6) — генерируется, когда операционное устройство процессора обнаруживает неверный код операции, несоответствие типа операндов коду операции, попытку выполнения привилегированных команд в R-режиме, неверные байты mod r/m или sib, использование префикса блокировки LOCK с командами, которые нельзя блокировать. Характерно, что существует несколько одно- и двухбайтовых кодов, зарезервированных фирмой Intel для развития системы команд, и хотя им в 80486 не соответствуют никакие команды, зарезервированные коды не вызывают особого случая.

Устройство (Под устройством здесь понимается аналог математического сопроцессора — устройство с плавающей точкой FPU) недоступно (7) — возникает в двух ситуациях:

□ процессор выполняет команду esc и бит ЕМ (эмуляция сопроцессора) в регистре CR0 установлен в 1;

□ процессор выполняет команду wait или esc и бит TS (переключение задачи) в регистре CR0 установлен в 1.

В первом случае программист намерен выполнить операции плавающей арифметики программно.

Второй случай может возникнуть после переключения задачи. Бит TS аппаратно устанавливается в 1 при переключении задачи, а первая же встретившаяся в новой задаче команда сопроцессора вызывает особый случай 7, ибо контекст устройства с плавающей точкой старой задачи не сохранен. Обработчик особого случая 7 сохраняет старое состояние устройства с плавающей точкой в сегменте TSS старой задачи и загружает новое состояние устройства из сегмента TSS новой задачи. (В случае работы цепочки вложенных задач обработчик должен программно отследить ту старую задачу, которая последней использовала FPU.) После этого привилегированной командой clts сбрасывается флажок TS и осуществляется возврат на команду устройства с плавающей точкой. Так как теперь флаг TS сброшен, команда сопроцессора будет выполнена.

Двойное нарушение (8) — обычно, когда процессор обнаруживает особый случай при попытке вызвать обработчик предыдущего особого случая, два особых случая обрабатываются последовательно. Если процессор не может обрабатывать их последовательно, он сигнализирует о двойном нарушении.

Для определения того, когда о двух нарушениях следует сообщать как о двойном нарушении, процессор подразделяет все особые случаи на три класса:

□ легкие особые случаи — векторы 1, 2, 3, 4, 5, 6, 7, 16;

□ тяжелые особые случаи — векторы 0, 10, 11, 12, 13;

□ страничные нарушения — вектор 14.

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

Если при попытке вызвать обработчик двойного нарушения возникает любое другое нарушение, процессор переходит в режим отключения. Этот режим аналогичен состоянию процессора после выполнения команды hlt. До восприятия сигналов NMI или RESET никакие команды не выполняются, причем если отключение возникло при выполнении обработчика немаскируемого прерывания, запустить процессор может только сигнал RESET.

Недействительный сегмент TSS (10) — возникает при попытке переключения на задачу с неверным сегментом TSS. Поскольку сегмент TSS может определять LDT, сегменты кода, стека, данных, к особому случаю 10 относятся ситуации с нарушением границ этих сегментов, нарушением прав доступа, запретом записи в сегмент стека и др. Нарушения могут возникать как в контексте старой, так и новой задачи, поэтому обработчик особого случая 10 должен сам быть задачей и вызываться через шлюз задачи (десятая строка IDT должна содержать шлюз задачи).

Неприсутствие сегмента (11) — формируется, когда бит присутствия сегмента в дескрипторе P=0. Это нарушение допускает рестарт, если обработчик особого случая 11 реализует механизм виртуальной памяти на уровне сегментов.

Нарушение стека (12) — возникает в двух ситуациях:

□ в результате нарушения предела любой операции, которая обращается к регистру SS (pop, push, enter, неявное использование стека при обращении к памяти, например, mov ax, [вр+6]);

□ при попытке загрузить в регистр SS дескриптор, который отмечен неприсутствующим.

Нарушение общей защиты (13) — все нарушения защиты, которые не служат причиной конкретного особого случая, вызывают особый случай общей защиты:

□ превышение предела сегмента (кроме стека);

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

□ запись в защищенный от записи сегмент;

□ считывание из выполняемого сегмента;

□ загрузка в SS селектора сегмента, защищенного от записи;

□ загрузка в регистры SS, DS, ES, FS, GS селектора системного сегмента;

□ загрузка в регистры SS, DS, ES, FS, GS селектора выполняемого сегмента;

□ обращение к памяти через DS, ES, FS, GS, когда в них пустой селектор;

□ переключение на занятую задачу;

□ нарушение правила привилегий и др.

Страничное нарушение (14) — возникает, когда разрешено страничное преобразование и имеет место одна из следующих ситуаций:

□ в элементе каталога разделов или таблицы страниц, используемом для преобразования линейного адреса в физический, сброшен бит присутствия;

□ процедура не имеет достаточного уровня привилегий для доступа к адресуемой странице.

Ошибка операции с плавающей точкой (16) — сигнализирует об ошибке, возникшей в команде устройства с плавающей точкой.

Контроль выравнивания (17) — возникает при нарушении выравнивания операндов. Операнды считаются выровненными, если адрес двухбайтового слова является четным (младший разряд равен 0), адрес четырехбайтового двойного слова кратен 4, а адрес восьмибайтовой структуры данных кратен 8. Для разрешения контроля выравнивания должны выполняться три условия:

□ бит AM в регистре CR3 установлен;

□ флаг АС установлен;

□ выполняется программа на уровне привилегий 3.







Дата добавления: 2015-04-16; просмотров: 716. Нарушение авторских прав; Мы поможем в написании вашей работы!



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

Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...

Кардиналистский и ординалистский подходы Кардиналистский (количественный подход) к анализу полезности основан на представлении о возможности измерения различных благ в условных единицах полезности...

Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...

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

В теории государства и права выделяют два пути возникновения государства: восточный и западный Восточный путь возникновения государства представляет собой плавный переход, перерастание первобытного общества в государство...

Закон Гука при растяжении и сжатии   Напряжения и деформации при растяжении и сжатии связаны между собой зависимостью, которая называется законом Гука, по имени установившего этот закон английского физика Роберта Гука в 1678 году...

Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит...

Кран машиниста усл. № 394 – назначение и устройство Кран машиниста условный номер 394 предназначен для управления тормозами поезда...

Приложение Г: Особенности заполнение справки формы ву-45   После выполнения полного опробования тормозов, а так же после сокращенного, если предварительно на станции было произведено полное опробование тормозов состава от стационарной установки с автоматической регистрацией параметров или без...

Studopedia.info - Студопедия - 2014-2024 год . (0.01 сек.) русская версия | украинская версия