Jump to content

регистр отладки x86

(Перенаправлено из регистра отладки )

В архитектуре x86 регистр отладки — это регистр, используемый процессором для программы отладки . Существует шесть регистров отладки, называемых DR0 ... DR7 , причем DR4 и DR5 являются устаревшими синонимами DR6 и DR7. Регистры отладки позволяют программистам выборочно включать различные условия отладки, связанные с набором из четырех адресов отладки. Два из этих регистров используются для управления функциями отладки. Доступ к этим регистрам осуществляется с помощью вариантов инструкции MOV. Регистр отладки может быть операндом-источником или операндом-приемником. Регистры отладки являются привилегированными ресурсами; инструкции MOV, которые обращаются к ним, могут выполняться только с нулевым уровнем привилегий . Попытка прочитать или записать регистры отладки при выполнении на любом другом уровне привилегий вызывает общую ошибку защиты .

от DR0 до DR3

[ редактировать ]

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

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

Обратите внимание, что когда подкачка включена, разные задачи могут иметь разные сопоставления линейных и физических адресов. В этом случае адрес в регистре адреса отладки может иметь отношение к одной задаче, но не относиться к другой. По этой причине x86 имеет в DR7 как глобальные, так и локальные биты разрешения. Эти биты указывают, имеет ли данный адрес отладки глобальную (все задачи) или локальную (только текущая задача) актуальность.

DR6 – статус отладки

[ редактировать ]

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

Биты Аббревиатура Описание
0 Б0 Обнаружено состояние точки останова № 0 [а]
1 Б1 Обнаружено состояние точки останова № 1 [а]
2 Б2 Обнаружено состояние точки останова № 2 [а]
3 Б3 Обнаружено состояние точки останова №3 [а]
10:4 Сдержанный.
Читаются как все 0 на процессорах 386/486 и все 1 на более поздних процессорах. [3]
11 БЛД Сбрасывается процессором в 0 для исключений блокировки шины. [б] [4]

На процессорах, которые не поддерживают исключения Bus Lock Trap, бит 11 DR6 доступен только для чтения и действует так же, как биты 10:4.

12 БК,
SMS
(только 386/486) Введен режим SMM или ICE. [3] (см. также DR7, бит 12).
Зарезервировано и читается как 0 на всех более поздних процессорах.
13 БД Обнаружен доступ к регистру отладки [с] [д] [и] (см. также DR7, бит 13).
14 БС Одношаговое выполнение (включено EFLAGS.TF ) [д]
15 БТ Точка останова переключения задач. [д]
Происходит при переключении задач с помощью TSS , у которого установлен бит T (флаг отладочной ловушки).
16 РТМ процессоры с Intel TSX ) ( Только
Сбрасывается процессором в 0 для исключений отладки внутри транзакций RTM. [ф] установлено значение 1 для всех исключений отладки вне транзакций.
На процессорах без TSX бит 16 DR6 доступен только для чтения и действует так же, как биты 31:17.
31:17 Сдержанный.
Читаются как все 0 на процессорах 386/486/ 6x86 и как все 1 на более поздних процессорах.
63:32 (только x86–64) Зарезервировано.
Читать как все 0. Должно быть записано как все 0.
  1. ^ Перейти обратно: а б с д B0–B3 устанавливаются для каждого условия точки останова, которое было выполнено во время создания исключения отладки.

    В некоторых реализациях B0-B3 могут быть установлены для точек останова, которые совпадают, но не включены. [1] - следовательно, обработчик отладки должен проверять только биты, соответствующие включенным точкам останова.

    Кроме того, от реализации зависит, будет ли аппаратное обеспечение очищать B0-B3 для несовпадающих условий точки останова, поэтому обработчикам отладки рекомендуется вручную очищать эти биты перед возвратом к прерванной задаче. [2]

  2. ^ Когда ловушка блокировки шины включена с использованием бита 2 DEBUGCTL ( МСР 1D9h), любая инструкция, вызывающая блокировку шины (в основном инструкции, использующие LOCK префикс для выполнения атомов памяти, которые выходят за границы строк кэша или работают с некэшируемой памятью), очистит бит 11 DR6 и вызовет исключение #DB типа ловушки. В противном случае этот бит не устанавливается и не очищается процессорами — обработчикам отладки рекомендуется устанавливать этот бит в 1 перед возвратом к прерванной задаче.
  3. ^ Указывает, что следующая инструкция в потоке инструкций обращается к регистру отладки.

    В некоторых реализациях этот бит может быть установлен, даже если DR7.GD не установлен. [1]

  4. ^ Перейти обратно: а б с Биты 13,14 и 15 DR6 никогда не сбрасываются аппаратно — поэтому обработчикам отладки рекомендуется вручную очищать эти биты перед возвратом к прерванной задаче.
  5. ^ Бит 13 зарезервирован на всех процессорах Cyrix .
  6. ^ Если внутри транзакции обнаружено состояние исключения отладки, процессор прервет транзакцию. Если включена расширенная отладка транзакций RTM, тогда будет выдано исключение отладки как исключение типа сбоя на XBEGIN инструкция, запустившая транзакцию, в противном случае транзакция прерывается без возникновения исключений.

DR7 — контроль отладки

[ редактировать ]

Регистр управления отладкой используется для выборочного включения условий четырех адресных точек останова и для указания типа и размера каждой из четырех точек останова. Существует два уровня включения: локальный (0,2,4,6) и глобальный (1,3,5,7). Биты локального разрешения автоматически сбрасываются процессором при каждом переключении задачи, чтобы избежать нежелательных состояний точки останова в новой задаче. Биты глобального разрешения не сбрасываются переключением задачи; следовательно, их можно использовать для условий, которые являются глобальными для всех задач.

Биты Аббревиатура Описание
0 Л0 Локальное включение точки останова №0.
1 G0 Глобальное включение точки останова №0.
2 Л1 Локальное включение точки останова №1.
3 Г1 Глобальное включение точки останова №1.
4 Л2 Локальное включение точки останова №2.
5 G2 Глобальное включение точки останова №2.
6 Л3 Локальное включение точки останова №3.
7 G3 Глобальное включение точки останова №3.
8 ТО (только 386) Включение локальной точной точки останова. [а]
9 GE (только 386) Включение глобальной точной точки останова. [а]
10 Зарезервировано, доступно только для чтения, читается как 1 и должно записываться как 1.
11 РТМ процессоры с Intel TSX ) ( Только
Включить расширенную отладку транзакций RTM (только если DEBUGCTL бит 15 также установлен)
На других процессорах: зарезервировано, доступно только для чтения, читается как 0 и должно записываться как 0.
12 И,
ОН МОЖЕТ
(только процессоры 386/486) Действие при совпадении точки останова:
0 = INT 1 (исключение #DB, по умолчанию)
1 = Переход к ICE/SMM [б]
На других процессорах: зарезервировано, доступно только для чтения, читается как 0 и должно записываться как 0.
13 ГД Общее включение обнаружения. Если установлено, будет вызывать исключение отладки при любой попытке доступа к регистрам DR0-DR7. [с]
15:14 Зарезервировано, должно быть записано как все 0. [д]
17:16 Ч/Б0 Условие точки останова для точки останова №0. [и]
19:18 ЛЕН0 Длина точки останова для точки останова №0. [ф]
21:20 Ч/З1 Условие точки останова для точки останова №1. [и]
23:22 ЛЕН1 Длина точки останова №1. [ф]
25:24 Ч/З2 Условие точки останова для точки останова №2. [и]
27:26 ТОЛЬКО 2 Длина точки останова для точки останова №2. [ф]
29:28 Ч/З3 Условие точки останова для точки останова №3. [и]
31:30 ЛЕН3 Длина точки останова для точки останова №3. [ф]
63:32 (только x86–64) Зарезервировано.
Читать как все 0. Должно быть записано как все 0.
  1. ^ Перейти обратно: а б На процессорах 80386 включение точных точек останова приводит к возникновению исключений точки останова данных как исключений типа ловушки для инструкции, которая выполнила доступ к данным. Если точные точки останова не включены, исключения точек останова данных могут быть задержаны одной или несколькими инструкциями. [5] Включение точных точек останова приводит к значительному снижению производительности 80386. [1]

    На более поздних процессорах точки останова всегда точны — биты 9:8 DR7 все еще присутствуют как записываемые биты, и их рекомендуется устанавливать, но они игнорируются ЦП.

  2. ^ Установка бита 12 DR7 на 1 изменяет действие точек останова, одношагового режима, общего обнаружения (см. бит 13) и поведение F1h ( "ICEBP"/ "INT01") опкод для:
  3. ^ Перед входом в обработчик исключений отладки бит 13 DR6 будет установлен, а бит 13 DR7 будет очищен, чтобы можно было получить доступ к регистрам DR0-DR7 внутри обработчика.
  4. ^ Сообщается, что на некоторых процессорах 386/486 бит 14 DR7 включает сообщения трассировки ветвей. [8] и бит 15 для включения сообщений трассировки задач. [3] Эти сообщения предназначены для использования во внутрисхемной эмуляции и могут вызвать нестабильность системы, если ICE не подключен.
  5. ^ Перейти обратно: а б с д Поддерживаемые условия точки останова:
    Ценить Перерыв
    00b Только выполнение инструкций
    01b Данные записывает только
    10b Ввод-вывод читает и записывает
    (определяется только если CR4.DE =1)
    11b Данные читаются и пишутся
    Поведение при использовании типа точки останова 10b на процессорах, где бит CR4.DE отсутствует или установлен в ноль, значение не определено.

    Для точек останова выполнения инструкций длина точки останова должна быть установлена ​​равной 00b (1 байт), иначе поведение не определено.

  6. ^ Перейти обратно: а б с д Поддерживаемые длины точек останова:
    Ценить Длина точки останова
    00b 1 байт
    01b 2 байта
    10b 8 байт
    (определяется только в 64-битном режиме)
    11b 4 байта

    Поведение при использовании длины точки останова 10b (8 байт) вне 64-битного режима не определено.

Не настоящие регистры. На процессорах, поддерживающих бит CR4.DE (Intel Pentium и новее), их поведение контролируется CR4.DE:

  • CR4.DE=0: DR4 и DR5 являются псевдонимами DR6 и DR7 соответственно.
  • CR4.DE=1: доступ к DR4/5 приводит к исключению #UD (неверный код операции).

На процессоре без CR4.DE поведение официально не определено — обычно DR4/5 ассоциируются с DR6/7, но существуют исключения, которые используются для обнаружения ЦП. [9]

См. также

[ редактировать ]
  1. ^ Перейти обратно: а б с Джон Кроуфорд и Пэт Гелсингер, «Программирование 80386», 1987 (ISBN 0-89588-381-3), глава 8, страницы 635–636.
  2. ^ Intel, Руководство разработчика программного обеспечения , номер заказа. 325462-078, дек 2022, том 3, раздел, 18.2.3, стр. 3640
  3. ^ Перейти обратно: а б с д Группа хакеров Потемкина, OPCODE.LST, версия 4.51, 15 октября 1999 г.
  4. ^ Intel, Руководство разработчика программного обеспечения для архитектур Intel® 64 и IA-32 , номер заказа. 325462-079, март 2023 г., том 3, главы 18.2.3 и 18.3.1.6 на стр. 3636 и 3643.
  5. ^ AMD, Справочник по микропроцессорам Am386 для персональных компьютеров , номер заказа. 11339C, 15 октября 1992 г., стр. 38.
  6. ^ Роберт Коллинз, Режим управления системой Intel , январь 1997 г. Архивировано из оригинала 13 июня 1997 г.
  7. ^ «Высокопроизводительные маломощные встроенные микропроцессоры Am386®SX/SXL/SXLV» (PDF) . , публикация № 21020, ред. А, апрель 1997 г., страницы 5 и 6.
  8. ^ Роберт Коллинз, Недокументированные фрагменты в DR7 . Архивировано из оригинала 1 декабря 1996 г.
  9. ^ Джефф Чаппелл, Идентификация ЦП до CPUID , 30 декабря 2021 г. Доступ: 29 января 2023 г.
  • Справочник программиста Intel 80386
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: faca7ba51bca0155b1d5d8bcf9b187af__1721957820
URL1:https://arc.ask3.ru/arc/aa/fa/af/faca7ba51bca0155b1d5d8bcf9b187af.html
Заголовок, (Title) документа по адресу, URL1:
x86 debug register - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)