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

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

Регистры отладки






Регистры отладки, форматы которых приведены на рис. 7.14, включают в себя:

□ четыре регистра DR0 — DR3, предназначенные для хранения линейных адресов четырех контрольных точек, каждая из которых независимо может быть определена как контрольная точка по команде или по данным;

□ регистр DR7 управления отладкой, включающий поля, которые определяют свойства контрольных точек и некоторые параметры процесса отладки;

□ регистр DR6 состояния отладки, предназначенный для идентификации причины прерывания отладки;

□ наконец, зарезервированные регистры DR5, DR4.

Рис. 7.14. Форматы регистров отладки

Рассмотрим форматы регистров состояния и управления.

Выше отмечалось, что все события отладки, кроме INT3, вызывают прерывание с вектором 1. Следовательно, при возникновении особого случая отладки встает вопрос о причине прерывания. Именно для идентификации причин прерывания 1 предусмотрен регистр состояния отладки DR6,

Младшие четыре бита B0 — B3 относятся к четырем контрольным точкам и единичное состояние B i означает достижение контрольной точки, линейный адрес которой находится в регистре DR i.

Флаг BS (Step) устанавливается в 1, когда процессор начинает отрабатывать особый случай, вызванный ловушкой покомандной работы, т. е. при BS=1 причиной особого случая является состояние TF=1 регистра EFLAGS. Этот случай имеет высший приоритет среди всех случаев отладки, когда BS=1, могут быть установлены и другие биты состояния отладки.

(Страница211)

Флаг BT (Task) устанавливается в 1, когда особый случай отладки вызван переключением на задачу, в TSS которой установлен бит ловушки T=1.

Регистры отладки доступны (по записи или чтению) только в реальном режиме или в защищенном режиме по привилегированной (т. е. разрешенной к выполнению только на нулевом уровне) команде mov:

mov eax, dr6

mov drl, eax

В регистре DR7 предусмотрен флаг GD, который, будучи установленным, обеспечивает "сверхзащиту" всех обращений к регистрам отладки, вызывая при любой попытке обращения к этим регистрам прерывание 1. Для идентификации этой ситуации в DR6 предусмотрен бит BD. Он устанавливается в 1, если следующая команда будет считывать или записывать в один из восьми регистров отладки. Характерно, что при вызове процедуры обработчика с вектором 1 бит GD автоматически сбрасывается, что обеспечивает обработчику возможность доступа к регистрам отладки.

Процессор никогда не сбрасывает биты регистра состояния отладки DR6, поэтому обработчик особого случая должен сбрасывать их программно, иначе причины особых случаев отладки будут накапливаться.

Возможно, при возникновении особого случая отладки в состоянии 1 будут находиться несколько битов DR6 (что возможно при разрешении аппаратных контрольных точек) или, наоборот, в DR6 не окажется единичных битов. Последнее возможно, если возникло внешнее прерывание с вектором 1 или выполняется команда int1.

Регистр управления отладкой DR7 содержит для каждой из четырех контрольных точек следующие поля, определяющие ее характеристики: L i, G i, RW i и LEN i, а также два однобитовых поля LE и GE, определяющие свойства, общие для всех контрольных точек. Назначение этих полей приведены в табл. 7.2. Кроме того, в регистре DR7 бит 13 — GD — предназначен для включения режима защиты регистров отладки от любого обращения со стороны программ пользователя.

Таблица 7.2. Назначение полей регистра DR7

Поле Назначение
Li Локальное разрешение контрольной точки i € {0, 1, 2, 3}. Когда бит Li находится в 1, разрешена аппаратная контрольная точка, линейный адрес которой находится в DR1, но только в текущей задаче. При переключении задачи сбрасываются все биты Li

Таблица 7.2 (окончание)

Поле Назначение
G i Глобальное разрешение контрольной точки i. Функционирует аналогично биту L i, но на него не действует переключение задач. Сбросить бит Gj можно только программно
LE Локальная точность
GE Глобальная точность
RW i Определяет вид контрольной точки i:
  • 00 — контрольная точка по команде;
  • 01 — контрольная точка по данным с обращением по записи;
  • 10 — не определена и не используется;
  • 11 — контрольная точка по данным с обращением по считыванию или записи (но не выбор команды)
LEN i Для контрольной точки i по данным определяет длину данных:
  • 00 — однобайтовое поле (и все команды);
  • 01 — двухбайтовое поле (слово);
  • 10 — не определена и не используется;
  • 11 — четырехбайтовое поле (двойное слово)

Контрольная точка может быть локальной (в пределах одной задачи) или глобальной — в зависимости от значений битов L i и G i

Допускается одновременное значение L i= G i =1 или L i =G i =0. В первом случае это эквивалентно G i =1, а во втором — контрольная точка запрещена и соответствие линейного адреса из регистра DRi адресу команды не вызывает особого случая (но B i в регистре DR6 устанавливается в 1).

Аппаратные контрольные точки по командам устанавливаются путем загрузки в один из регистров DR i линейного адреса требуемой команды, установки в 00 соответствующих полей RW i и LEN i, установки в 1 бита L i и/или G i. После этого процессор начинает контролировать устройство предвыборки команд. Когда фиксируется равенство адреса команды и содержимого одного из "разрешенных" регистров DR i, хранящих контрольную точку по командам, формируется особый случай отладки, причем в DR6 устанавливается в 1 бит B i.

Адреса команд в регистрах DR0 — DR3 должны быть 32-разрядными линейными, а не логическими (селектор: смещение) или физическими. Линейный адрес не зависит от страничного преобразования, поэтому контрольная точка действует даже тогда, когда целевая команда участвует в свопинге и отображается на различные адреса физической памяти.

Если контрольная точка установлена как локальная, она сбрасывается при переключении задачи, причем значение DR7 не сохраняется в TSS, поэтому при восстановлении задачи контрольные точки не возобновляются. При необходимости следует предусмотреть программное возобновление контрольных точек. Для этого можно в расширении сегмента TSS той задачи, в которой определены локальные контрольные точки, записать значения DR0 — DR3 и DR7, а так же установить в TSS бит T=1. При переходе к такой задаче вызывается обработчик особого случая, который и восстановит значения регистров DR из сегмента TSS.

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

Аппаратные контрольные точки по данным устанавливаются с помощью тех же регистров отладки DR. Процессор формирует особый случай отладки как ловушку, когда происходит обращение к данным по установленным в DR адресам. Разрешается совместное применение контрольных точек по командам и по данным, причем возможно произвольное назначение типа контрольной точки (поле RW i в регистре DR7).

Процессор контролирует выравнивание данных, если их длина, указанная в поле LEN i, равна слову или двойному слову. В этом случае при сравнении текущего адреса сегмента данных с адресом контрольной точки игнорируются один или два младших бита регистра DR i.

Конвейерная архитектура старших моделей x86 обеспечивает одновременную обработку нескольких команд. Случается, что контрольная точка по данным фиксируется только после выполнения нескольких следующих команд. В регистре управления отладкой DR6 предусмотрены биты, задающие локальную LE и глобальную GE "точность" определения контрольной точки по данным. Будучи установленными в 1, эти биты замедляют внутренние операции процессора таким образом, что сообщают об обращении по контролируемому адресу данных точно в тот момент, когда происходит обращение к памяти.

Биты LE, GE действуют только на контрольные точки по данным, являются общими для всех таких точек, причем LE автоматически сбрасывается при переключении задачи, a GE может быть сброшен лишь программно.







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



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

Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...

Важнейшие способы обработки и анализа рядов динамики Не во всех случаях эмпирические данные рядов динамики позволяют определить тенденцию изменения явления во времени...

ТЕОРЕТИЧЕСКАЯ МЕХАНИКА Статика является частью теоретической механики, изучающей условия, при ко­торых тело находится под действием заданной системы сил...

Меры безопасности при обращении с оружием и боеприпасами 64. Получение (сдача) оружия и боеприпасов для проведения стрельб осуществляется в установленном порядке[1]. 65. Безопасность при проведении стрельб обеспечивается...

Весы настольные циферблатные Весы настольные циферблатные РН-10Ц13 (рис.3.1) выпускаются с наибольшими пределами взвешивания 2...

Хронометражно-табличная методика определения суточного расхода энергии студента Цель: познакомиться с хронометражно-табличным методом опреде­ления суточного расхода энергии...

Влияние первой русской революции 1905-1907 гг. на Казахстан. Революция в России (1905-1907 гг.), дала первый толчок политическому пробуждению трудящихся Казахстана, развитию национально-освободительного рабочего движения против гнета. В Казахстане, находившемся далеко от политических центров Российской империи...

Виды сухожильных швов После выделения культи сухожилия и эвакуации гематомы приступают к восстановлению целостности сухожилия...

КОНСТРУКЦИЯ КОЛЕСНОЙ ПАРЫ ВАГОНА Тип колёсной пары определяется типом оси и диаметром колес. Согласно ГОСТ 4835-2006* устанавливаются типы колесных пар для грузовых вагонов с осями РУ1Ш и РВ2Ш и колесами диаметром по кругу катания 957 мм. Номинальный диаметр колеса – 950 мм...

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