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

Шесть доступных регистров отладки (DR0-DR3, DR6, DR7) расширяют возможности отладки МП. Они устанавливают точки останова по данным и позволяют устанавливать точки останова по командам без модификации сегментов программ. Регистры DR0-DR3 предназначены для хранения четырех линейных адресов точек останова. Регистры DR4 и DR5 зарезервированы. Формат регистров DR6 и DR7 показан на рисунке.

Регистр DR6 показывает текущее состояние точек останова:

B0-B3 (386+) - флаги выставляются, когда для соответствующей точки останова выполняется условие отладки.

BD - обнаружение доступа к регистрам отладки (386+). Флаг выставляется, если следующая инструкция собирается обратиться к регистрам отладки.

BS - пошаговая отладка (386+). Флаг выставляется, если особый случай отладки вызван ловушкой пошаговой отладки (EFLAGS.TF=1).

BT - переключение задачи (386+). Флаг выставляется, если произошло переключение на задачу, в сегменте TSS которой выставлен флаг ловушки отладки.

Регистр DR7 задает условие для точек останова:

L0-L3 - локальные точки останова (386+). Точки останова действуют только в текущей задаче и при переключении задачи сбрасываются.

G0-G3 - глобальные точки останова (386+). Точки останова действуют на все задачи и не сбрасываются при переключении задач.

LE и GE - точное обнаружение инструкции в точке останова (386,486,Pentium). Не поддерживаются P6 и более новыми моделями.

GD - защита регистров отладки (386+). Разрешение генерации исключения отладки в случае, если команда обратится к одному из регистров отладки.

RW0-RW3 - условие контрольной точки (386+):

- исполнение инструкции по указанному адресу
- запись данных по указанному адресу
- обращение к порту ввода-вывода (когда CR4.DE=1 только для Pentium+)
- чтение или запись данных по указанному адресу

LEN0-LEN3 (386+) - длина контрольной точки для обращения к данным (если RWx=00, то LENx тоже должно быть 00):

- 1 байт
- 2 байта
- резерв.
- 4 байта