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


r (Registers)

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

Режим пользователя

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

Режим ядра

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

Параметры

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

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

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

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

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

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? см. в примерах программы команд отладчика.

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

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

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

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

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

ib

Подписанный байт

ub

Неподписанный байт

iw

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

uw

Слово без знака

id

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

ud

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

iq

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

uq

Unsigned quad-word

f

32-разрядная плавающая точка

дн.

64-разрядная плавающая точка

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

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

Среда

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

Дополнительная информация

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

Замечания

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

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

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

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

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

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

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

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

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

бит значение Описание

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++, необходимо предшествуть регистрации по знаку (@). Поэтому можно использовать следующую команду, чтобы скопировать регистр 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