КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Регистры отладки
Регистры отладки, форматы которых приведены на рис. 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
Таблица 7.2 (окончание)
Контрольная точка может быть локальной (в пределах одной задачи) или глобальной — в зависимости от значений битов 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-25; Просмотров: 814; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |