r (регистры)

Команда r отображает или изменяет регистры, регистры с плавающей запятой, флаги, псевдорегистраторы и псевдонимы с фиксированным именем.

User-Mode

[~Thread] r[M Mask|F|X|?] [ Register[:[Num]Type] [= [Value]] ] 
r.

Kernel-Mode

[Processor] r[M Mask|F|X|Y|YI|?] [ Register[:[Num]Type] [= [Value]] ] 
r.

Параметры

Процессор
Указывает процессор, из которых считываются регистры. Значение по умолчанию равно нулю. Если указан параметр Обработчик, параметр Register включить нельзя— отображаются все регистры. Дополнительные сведения о синтаксисе см. в разделе Многопроцессорный синтаксис. Можно указать процессоры только в режиме ядра.

Поток
Указывает поток, из которых считываются регистры. Если поток не указан, используется текущий поток. Дополнительные сведения о синтаксисе см. в разделе Синтаксис потока. Потоки можно указать только в пользовательском режиме.

MMask
Указывает маску, используемую при отображении отладчиком регистров. Буква "M" должна быть прописной буквой. Маска — это сумма битов, которые указывают на отображение регистра. Значение битов зависит от процессора и режима (дополнительные сведения см. в таблицах в следующем разделе примечаний). Если опустить M, используется маска по умолчанию. Вы можете задать или отобразить маску по умолчанию с помощью команды Rm (Register Mask).

F
Отображает регистры с плавающей запятой. Буква "F" должна быть прописной буквой. Этот параметр эквивалентен 0x4 M.

X
Отображает регистры XMM SSE. Этот параметр эквивалентен M 0x40.

Y
Отображает регистры AVX YMM. Этот параметр эквивалентен 0x200 M.

YI
Отображает целочисленные регистры AVX YMM. Этот параметр эквивалентен 0x400 M.

Z
Отображает регистры AVX-512 YMM (zmm0-zmm31) в формате с плавающей запятой.

ZI
Отображает регистры AVX-512 YMM (zmm0-zmm31) в целочисленном формате.

K
Отображение регистров предиката AVX-512 Opmask (K0–K7).

?
(Только псевдорегистративное назначение) Заставляет псевдорегистрал получать типизированные сведения. Разрешен любой тип. Дополнительные сведения о синтаксисе r? см. в разделе Примеры командной программы отладчика.

Зарегистрировать
Указывает псевдоним регистра, флага, псевдорегистрирующего или фиксированного имени для отображения или изменения. Не следует предшествовать этому параметру со знаком (@). Дополнительные сведения о синтаксисе см. в разделе Синтаксис регистрации.

Num
Указывает количество отображаемых элементов. Если этот параметр опущен, но указан тип, отобразится полная длина регистра.

Тип
Задает формат данных для отображения каждого элемента регистра. Тип можно использовать только с 64-разрядными и 128-разрядными векторными регистрами. Можно указать несколько типов.

Можно указать одно или несколько из следующих значений.

Тип Формат отображения

Ib

Байт со знаком

Ub

Байт без знака

Iw

Подписанное слово

uw

Неподписаемое слово

идентификатор

Подписанный DWORD

Ud

Неподписанный DWORD

Iq

Подписанное четырехсловное слово

Uq

Беззнаковые четырехсловие

f

32-разрядный режим с плавающей запятой

d

64-разрядная версия с плавающей запятой

Значение
Задает значение, присваиваемое регистру. Дополнительные сведения о синтаксисе см. в разделе Синтаксис числовых выражений.

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

Среда

Элемент Описание
Режимы Пользовательский режим, режим ядра
Цели Динамический аварийный дамп
Платформы Все

Дополнительные сведения

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

Комментарии

Если параметр Register не указан, команда r отображает все регистры, не относящиеся к плавающей запятой, а команда rF — все регистры с плавающей запятой. Это поведение можно изменить с помощью команды rm (register Mask).

Если вы указали Register , но опустите знак равенства (=) и параметр Value , команда отображает текущее значение регистра.

Если вы указали Register и знак равенства (=), но опустите значение, команда отображает текущее значение регистра и запрашивает новое значение.

Если указать Register, знак равенства (=) и Value, команда изменит регистр, чтобы он содержал значение . (Если активен тихий режим , знак равенства можно опустить. Вы можете включить тихий режим с помощью команды sq (Задать тихий режим). В режиме ядра можно также включить тихий режим с помощью переменной среды KDQUIET.)

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

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

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

При указании регистра с плавающей запятой по имени параметр F не требуется. При указании одного регистра с плавающей запятой в дополнение к десятичному значению отображается необработанное шестнадцатеричное значение.

Следующие биты Mask поддерживаются для процессоров x86 или x64.

bit Значение Описание

0 1

0x1 0x2

Отображает базовые целочисленные регистры. (Задание одного или обоих этих битов имеет одинаковый эффект.)

2

0x4

Отображает регистры с плавающей запятой.

3

0x8

Отображает регистры сегментов.

4

0x10

Отображает регистры MMX.

5

0x20

Отображает регистры отладки. В режиме ядра при задании этого бита также отображается регистр CR4.

6

0x40

Отображает регистры XMM SSE.

7

0x80

(Только в режиме ядра) Отображает регистры элементов управления, например CR0, CR2, CR3 и CR8.

8

0x100

(Только в режиме ядра) Отображает регистры дескриптора и состояния задачи.

9

0x200

Отображает регистры AVX YMM в плавающей запятой.

10

0x400

Отображает регистры AVX YMM в десятичных целых числах.

11

0x800

Отображает регистры AVX XMM в десятичных целых числах.

В следующих примерах кода показаны команды r для процессора на базе x86.

В режиме ядра следующая команда показывает регистры для процессора 2.

1: kd> 2r 

В пользовательском режиме следующая команда показывает регистры для потока 2.

0:000> ~2 r 

В пользовательском режиме следующая команда отображает все регистры eax , связанные со всеми потоками (в порядке индекса потоков).

0:000> ~* r eax

Следующая команда задает регистр eax для текущего потока 0x000000FF.

0:000> r eax=0x000000FF

Следующая команда задает для регистра st0 значение 1,234e+10 ( F является необязательным).

0:000> rF st0=1.234e+10

Следующая команда отображает нулевой флаг.

0:000> r zf 

Следующая команда отображает регистр xmm0 как 16 неподписанных байтов, а затем отображает полное содержимое регистра xmm1 в формате двойной точности с плавающей запятой.

0:000> r xmm0:16ub, xmm1:d 

Если текущий синтаксис — C++, перед регистрами должен быть знак at (@). Поэтому для копирования регистра ebx в регистр eax можно использовать следующую команду.

0:000> r eax = @ebx

Следующая команда отображает псевдорегистры так же, как команда r отображает регистры.

0:000> r $teb

Вы также можете использовать команду r для создания псевдонимов с фиксированным именем. Эти псевдонимы не являются регистрами или псевдорегистрами, даже если они связаны с командой r . Дополнительные сведения об этих псевдонимах см. в разделе Использование псевдонимов.

Ниже приведен пример команды r. на процессоре x86. Последняя запись стека вызовов предшествует самой команде.

01004af3 8bec            mov     ebp,esp
0:000> r.
ebp=0006ffc0  esp=0006ff7c