Введение

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

DR0 - DR3

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