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