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


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

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

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

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

Если вы используете синтаксис выражений C++, знак at всегда является обязательным.

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

0:000> r eax = @ebx

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

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

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

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

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

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

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