December 12 2017 08:29:20
Навигация
Авторизация
Логин

Пароль



Вы не зарегистрированы?
Нажмите здесь для регистрации .

Забыли пароль?
Запросите новый здесь.
СРЕДСТВА ОБЕСПЕЧЕНИЯ ОТЛАДКИ
ФОРМАТЫ ПРЕДСТАВЛЕНИЯ ДАННЫХ И ВЫПОЛНЕНИЕ ОПЕРАЦИЙ

Исключение 13 - нарушение общей защиты (#GP). Возникает во всех случаях нарушения защиты, которые не вызывают исключений #NP, #SS, #PF или #TS. К таким случаям относятся:

•  нарушение границы сегмента при обращении к сегментам, на которые ссылаются регистры CS, DS, ES, GS и FS;

•  нарушение границы дескрипторной таблицы (кроме случаев переключения задач и переключения стека);

•  передача управления невыполняемому сегменту;

•  запись в сегмент кода или в сегмент данных, для которого разрешено только чтение;

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

•  попытка загрузить сегментный регистр SS селектором сегмента, для которого разрешено только чтение (кроме случая переключения задач);

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

•  загрузка сегментных регистров DS, ES, FS или GS селекторами сегментов кода, допускающих только выполнение;

•  загрузка сегментного регистра SS нуль-селектором или селектором сегмента кода;

•  загрузка сегментного регистра CS нуль-селектором или селектором сегмента данных;

•  обращение к памяти с использованием сегментных регистров DS, ES, FS или GS, когда они содержат нуль-селекторы;

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

•  переключение на незанятую задачу при выполнении команды IRET;

•   использование селектора, который ссылается на дескриптор TSS в LDT (дескрипторы TSS могут находиться только в GDT);

•  нарушение правил защиты сегментов;

•  превышение длины команды в 15 байт (такая ситуация может возникнуть при использовании излишних префиксов);

•  загрузка в регистр управления CR0 содержимого, в котором бит PG = 1 (страничное преобразование разрешено) при значении бита РЕ = 0 (защищенный режим запрещен).

•  загрузка в регистр управления CR0 содержимого, в котором бит NW = 1 и бит CD = 0;

•  использование элемента таблицы IDТ, который не является шлюзом прерывания, шлюзом ловушки или шлюзом задачи;

•  попытка в режиме виртуального 8086 передать управление обработчику прерывания через шлюз ловушки или шлюз прерывания, когда сегмент кода программы-обработчика имеет DPL > 0;

•  попытка записать «1» в зарезервированные биты регистры управления CR4;

•  попытка выполнить привилегированную команду, когда CPL № 0;

•  попытка записать «1» в зарезервированные биты MSR регистров;

•  использование шлюза, который содержит нуль-селектор;

•  выполнение команды INTn, когда CPL > gDPL выбираемого шлюза;

•  использование в дескрипторе шлюза селектора, который не ссылается на сегмент команд;

•  использование в команде LLDT операнда, который не является селектором LDT или имеет значение бита TI = 1;

•  использование в команде LTR операнда, который является локальным селектором или ссылается на занятую задачу;

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

•  выборка процессором, работающим в режиме расширенной адресации (установлено значение бита РАЕ = 1 в регистре CR4), указателя каталога страниц, в зарезервированных полях которого имеются «1».

Исключение 14 - ошибка обращения к странице (#PF). Имеет место при страничном преобразовании адресов в следующих случаях:

•   бит присутствия Р = 0 в указателе таблицы или страницы;

•  нарушение правил защиты страниц.


31 4 3 2 1 0

Резервировано RSVD U/S W/R P

Рис. 2.62. Формат кода ошибки для исключения #PF

Формат кода ошибки для этого исключения (рис. 2.62) содержит биты, которые имеют следующее назначение:

Р = 0, если исключение вызвано отсутствием страницы, Р = 1, если исключение вызвано нарушением правил защиты для страниц;

W/R = 0, если исключение произошло при чтении страницы, W/R = 1, если - при записи на страницу;

U/S = 0, если исключение произошло при работе процессора в режиме супервизора, U/S = 1, если исключение произошло при работе в режиме пользователя;

RSVD = 0, если исключение #PF произошло из-за того, что процессор обнаружил «1» в зарезервированных полях указателя таблицы или указателя страницы; RSVD = 1 при других причинах исключения.

В регистр CR2 процессор заносит линейный адрес, приведший к исключению #PF.

Исключение 16- исключение FPU (#MF). Реализуется при различных видах ошибок при обработке чисел с плавающей точкой.

Исключение 17 - ошибка выравнивания (#АС). Возникает при нарушении правил выравнивания операндов, которые процессор проверяет, если в регистре EFLAGS установлено значение признака АС = 1, и в регистре CR0 бит AM = 1. Исключение реализуется в случае нарушения следующих правил формирования адреса операнда:

•  адрес должен быть кратным 2 при выборке слова, селектора или 32-разрядного дальнего (far) указателя;

•  адрес должен быть кратным 4 при выборке двойного слова, числа с плавающей точкой одинарной точности, 48-разрядного дальнего (far) указателя, 32-разрядного ближнего (near) указателя или битовой строки;

•  адрес должен быть кратным 8 при выборке числа с плавающей точкой двойной точности или числа с плавающей точкой расширенной точности.

Процессор всегда заносит в стек нулевой код ошибки при вызове исключения #АС.

Исключение 18 - машинный контроль (#МС). Обеспечивает контроль работы процессора с помощью специализированных (модельно-специфических) регистров MSR.

Исключение 19 - исключение SSE (#ХМ). Реализуется при различных видах ошибок, возникающих при выполнении SSE-команд.

2.8.3. СРЕДСТВА ОБЕСПЕЧЕНИЯ ОТЛАДКИ

Процессоры семейства Р6 реализуют широкий набор вариантов отладки:

•  программный останов,

•  пошаговый режим,

•  отладку с использованием регистров отладки,

•  отладку с использованием специализированных MSR-регистров,

•   режим зондовой отладки.

Комментарии
Нет комментариев.
Добавить комментарий
Пожалуйста, залогиньтесь для добавления комментария.
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, авторизуйтесьили зарегистрируйтесь для голосования.

Нет данных для оценки.

Время загрузки: 0.07 секунд 2,295,840 уникальных посетителей