Показанный на Рисунке 11-1 отладочный управляющий регистр задает вид доступа к памяти, связанный с каждой контрольной точкой. Каждый адрес в регистрах DR0 - DR3 соответствует полю R/W0 - R/W3 в регистре DR7. процессор интерпретирует их следующим образом:
00 - Прерывание только при выполнении команды
01 - Прерывание только при записи данных
10 - не определено
11 - прерывание при чтении и записи данных, но не при выборке команды
Отладочные регистры 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0-----------------------------------------------------------------| L | R | L | R | L | R | L | R | | | | | | | | | | | || E | / | E | / | E | / | E | / |0 0 0 0 0 0|G|L|G|L|G|L|G|L|G|L|DR7| N | W | N | W | N | W | N | W | |E|E|3|3|2|2|1|1|0|0|| 3 | 3 | 2 | 2 | 1 | 1 | 0 | 0 | | | | | | | | | | | ||---------------------------------------------------------------||0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0|B|B|B|0 0 0 0 0 0 0 0 0|B|B|B|B|DR6| |T|S|D| |3|2|1|0||---------------------------------------------------------------|| Зарезервировано |DR5|---------------------------------------------------------------|| Зарезервировано |DR5|---------------------------------------------------------------|| Физический адрес контрольной точки 3 ||---------------------------------------------------------------|| Физический адрес контрольной точки 2 ||---------------------------------------------------------------|| Физический адрес контрольной точки 1 ||---------------------------------------------------------------|| Физический адрес контрольной точки 0 |----------------------------------------------------------------- Биты, помеченные как 0, зарезервированы. Не используйте их. Рисунок 11-1. Отладочные регистры
Поля LEN0 - LEN3 регистра DR7 задат размер позиции памяти, для которой установлены контрольные точки. Может быть задан размер в 1, 2 или 4 байта.
Поля длины интерпретируются следующим образом:
00 - доина один байт
01 - длина два байта
10 - не определено
11 - длина четыре байта.
Если RWn равно 00 (выполнение команды), то LENn должно быть равно 00. Эффект при использовании любой другой длины неопределен.
Младшие восемь битов регистра DR7 (поля от L0 до L3 и G0 до G3) по отдельности разрешают условия контрольных точек в четырех адресах. Существует два уровня их разрешения: локальный (от L0 до L3) и глобальный (от G0 до G3). Локальные биты разрешения автоматически очищаются процессором при каждом переключении задачи, чтобы избежать нежелательных условий контрольных точек в новой задаче. Они используются для установки контрольных точек в одной отдельной задаче. Глобальные биты разрешения при переключении задачи не очищаются. Они используются для разрешения условий контрольной точки, применимых ко всем задачам.
Процессор i486 всегда использует при отладке точное совпадение для контрольных точек данных. То есть, если какие-либо из битов Ln/Gn установлены, то процессор замедляет выполнение таким образом, что сообщение о контрольной точке данных выдается именно для той команды, которая вызвала срабатывание данной контрольной точки, а не для следующей выполняемой команды. В таком случае одно-тактовые команды, выполняющие доступ к памяти, будут занимать два тактовых цикла.
Для процессора 386 DX точное совпадение для контрольных точек данных не происходит, если его не разрешить установкой бита LE или GE. Процессор i486 эти биты игнорирует.