Поделиться через


Синтаксис регистрации

Отладчик может управлять регистрами и регистрами с плавающей запятой.

При использовании регистра в выражении следует добавить знак "@" перед регистром. Знак "@" указывает отладчику, что следующий текст является именем регистра.

Если вы используете синтаксис выражений MASM, вы можете опустить символ '@' для некоторых очень распространенных регистров. В системах на основе x86 можно опустить знак для eax, ebx, ecx, edx, esi, edi, ebp, eip и efl регистров. Однако, при указании менее распространенного регистра без знака @, отладчик сначала пытается интерпретировать текст как шестнадцатеричное число. Если текст содержит не шестнадцатеричные символы, отладчик затем интерпретирует текст как символ. Наконец, если отладчик не находит совпадения символов, отладчик интерпретирует текст как регистр.

При использовании синтаксиса выражений C++ всегда требуется ат-символ (@).

Команда r (Registers) является исключением из этого правила. Отладчик всегда интерпретирует свой первый аргумент как регистр. (Символ "@" не требуется и не разрешён.) Если для команды r есть второй аргумент, он интерпретируется в соответствии с синтаксисом выражения по умолчанию. Если синтаксис выражения по умолчанию — C++, необходимо использовать следующую команду, чтобы скопировать регистр ebx в регистр eax .

0:000> r eax = @ebx

Дополнительные сведения о регистрах и инструкциях, относящихся к каждому процессору, см. в разделе "Архитектура процессора".

Флаги на процессоре на основе x86

Процессоры на основе x86 также используют несколько 1-разрядных регистров, известных как флаги. Дополнительные сведения об этих флагах и синтаксисе, которые можно использовать для просмотра или изменения этих флагов, см. в разделе "Флаги x86".

Регистры и потоки

Каждый поток имеет собственные значения регистра. Эти значения хранятся в регистрах ЦП при выполнении потока и в памяти при выполнении другого потока.

В пользовательском режиме любая ссылка на регистр интерпретируется как регистр, связанный с текущим потоком. Дополнительные сведения о текущем потоке см. в разделе "Управление процессами и потоками".

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