Эти восемь 32-битных регистров (DR0 – DR7) позволяют программам, выполняющимся на уровне привилегий 0, определять точки останова, не модифицируя код программ, например для отладки ПЗУ или программ, применяющих сложные схемы защиты от трассировки. Пример отладчика, использующего эти регистры, — SoftICE.
DR7 (DCR) — регистр управления отладкой
биты 31 – 30: поле LEN для точки останова 3 (размер точки останова)
00 — 1 байт
01 — 2 байта
10 — не определен (например, для останова при выполнении)
11 — 4 байта
биты 29 – 28: поле R/W для точки останова 3 (тип точки останова)
00 — при выполнении команды
01 — при записи
10 — при обращении к порту (если бит DE в регистре CR4 = 1)
11 — при чтении или записи
биты 27 – 26: иоле LEN для точки останова 2
биты 25 – 24: поле R/W для точки останова 2
биты 23 – 22: поле LEN для точки останова 1
биты 21 – 20: поле R/W для точки останова 1
биты 19 – 18: поле LEN для точки останова 0
биты 17 – 16: поле R/W для точки останова 0
биты 15 – 14: 00
бит 13: бит GD — включает режим, в котором любое обращение к любому отладочному регистру, даже из кольца защиты 0, вызывает исключение #DB (этот бит автоматически сбрасывается внутри обработчика этого исключения)
биты 12 – 10: 001
бит 9: бит GE — если этот бит 0, точка останова по обращению к данным может не сработать или сработать на несколько команд позже, так что лучше всегда сохранять его равным 1
бит 7: бит G3 — точка останова 3 включена
бит 5: бит G2 — точка останова 2 включена
бит 3: бит G1 — точка останова 1 включена