Тип исключения - Fault (ошибка).
Описание
Означает, что используя механизм трансляции страниц, процессор обнаружил одно из следующих условий:
Сброшен флаг P присутствия страницы в элементе каталога или таблицы страниц (т.е. страница не присутствует в памяти).
| Процедура не имеет достаточных привилегий для доступа к странице.
| Код, работающий на уровне привилегий пользователя пытается писать в страницу, предназначенную только для чтения. Для процессоров Intel486 и старше, при установленном флаге WP в CR0 это исключение возникнет и для кода, работающего на системном уровне, при попытке писать в страницу уровня пользователя, предназначенную только для чтения.
| Установлен один или более зарезервированных битов в элементе каталога страниц.
| |
Если флаг P = 0, то исключение вызвано отсутствием страницы, иначе - были нарушены права доступа или записаны зарезервированные биты.
| Флаг W/R определяет тип доступа к странице, вызвавший нарушение: 0 - чтение, 1 - запись.
| Флаг U/S показывает на каком уровне был доступ: 0/1 - пользовательском / системном.
| Флаг RSVD показывает наличие единиц в зарезервированных флагах в элементе каталога страниц (если установлен флаг PSE или PAE в CR4).
| |
Дополнительная информация содержится в регистре CR2 - там будет линейный
адрес, по которому было сгенерировано исключение.
Если исключение вызвано нарушением прав доступа, то флаг доступа в элементе
каталога страниц будет установлен.
Указатель кода: сохранённые значения CS:EIP обычно указывают на команду, сгенерировавшую исключение. Если исключение возникло при переключении задач, то CS:EIP будут указывать на текущую команду новой задачи.
Изменение состояния программы: не меняется, т.к. команда, вызвавшая исключение, не была выполнена.
Если в системе применяется мультизадачность, то обработчик этого исключения должен быть в отдельной задаче.
Вопросы? Замечания? Пишите: sasm@narod.ru |
Copyright © Александр Семенко. |