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.
参数
处理器
指定从中读取寄存器的处理器。 默认值为零。 如果指定 Processor,则不能包含 Register 参数 -- 将显示所有寄存器。 有关语法的详细信息,请参阅 多处理器语法。 只能在内核模式下指定处理器。
线程
指定从中读取寄存器的线程。 如果未指定线程,则使用当前线程。 有关语法的详细信息,请参阅 线程语法。 只能在用户模式下指定线程。
M掩码
指定调试器显示寄存器时要使用的掩码。 “M”必须是大写字母。 掩码 是一个位之和,指示有关寄存器显示的内容。 位的含义取决于处理器和模式 (请参阅以下“备注”部分中的表,以获取) 的详细信息。 如果省略 M,则使用默认掩码。 可以使用 Rm (Register Mask) 命令设置或显示默认掩码。
F
显示浮点寄存器。 “F”必须是大写字母。 此选项等效于 M 0x4。
X
显示 SSE XMM 寄存器。 此选项等效于 M 0x40。
Y
显示 AVX YMM 寄存器。 此选项等效于 M 0x200。
一
显示 AVX YMM 整数寄存器。 此选项等效于 M 0x400。
Z
以浮点格式显示 AVX-512 YMM 寄存器 (zmm0-zmm31) 。
子
以整数格式显示 AVX-512 YMM 寄存器 (zmm0-zmm31) 。
K
显示 AVX-512 Opmask 谓词寄存器 (K0-K7) 。
?
仅 (伪寄存器分配) 使伪寄存器获取类型化信息。 允许任何类型。 有关 r? 语法的详细信息,请参阅 调试器命令程序示例。
注册
指定要显示或修改的寄存器、标志、伪寄存器或固定名称别名。 不得在 () @ 符号处在此参数前面加上 。 有关语法的详细信息,请参阅 Register Syntax。
Num
指定要显示的元素数。 如果省略此参数,但包含 Type,则显示完整的寄存器长度。
Type
指定要显示每个寄存器元素的数据格式。 只能对 64 位和 128 位矢量寄存器使用 Type 。 可以指定多个类型。
可以指定以下一个或多个值。
类型 | 显示格式 |
---|---|
Ib |
已签名的字节 |
ub |
无符号字节 |
iw |
有符号单词 |
uw |
无符号单词 |
id |
已签名 DWORD |
Ud |
无符号 DWORD |
智商 |
带符号象限字 |
uq |
无符号象限字 |
f |
32 位浮点 |
d |
64 位浮点 |
价值
指定要分配给寄存器的值。 有关语法的详细信息,请参阅 数值表达式语法。
.
显示当前指令中使用的寄存器。 如果未使用寄存器,则不显示任何输出。
环境
项 | 说明 |
---|---|
模式 | 用户模式、内核模式 |
目标 | 实时、故障转储 |
平台 | 全部 |
其他信息
有关寄存器上下文和其他上下文设置的详细信息,请参阅 更改上下文。
注解
如果未指定 Register, 则 r 命令将显示所有非浮点寄存器, rF 命令显示所有浮点寄存器。 可以使用 rm (Register Mask) 命令更改此行为。
如果指定 Register ,但省略了等号 (=) 和 Value 参数,则命令将显示寄存器的当前值。
如果指定 Register 和等号 (=) 但省略 Value,则命令将显示寄存器的当前值并提示输入新值。
如果指定 Register,则等号 (=) 和 Value,则 命令将更改寄存器以包含该值。 (如果 静默模式 处于活动状态,则可以省略等号。 可以使用 sq (设置 安静模式) 命令打开安静模式。 在内核模式下,还可以使用 KDQUIET 环境变量打开安静模式。)
可以指定多个寄存器,用逗号分隔。
在用户模式下, r 命令显示与当前线程关联的寄存器。 有关线程的详细信息,请参阅 控制进程和线程。
在内核模式下, r 命令显示与当前寄存器 上下文关联的寄存器。 可以设置寄存器上下文以匹配特定的线程、上下文记录或陷阱帧。 实际上仅显示指定寄存器上下文的最重要寄存器,并且无法更改其值。 有关注册上下文的详细信息,请参阅 注册上下文。
按名称指定浮点寄存器时,不需要 F 选项。 指定单个浮点寄存器时,除了十进制值外,还会显示原始十六进制值。
基于 x86 的处理器或基于 x64 的处理器支持以下 掩码 位。
bit | 值 | 说明 |
---|---|---|
0 1 | 0x1 0x2 | 显示基本整数寄存器。 (设置其中一个或两个位具有相同的效果。) |
2 |
0x4 |
显示浮点寄存器。 |
3 |
0x8 |
显示段寄存器。 |
4 |
0x10 |
显示 MMX 寄存器。 |
5 |
0x20 |
显示调试寄存器。 在内核模式下,设置此位还会显示 CR4 寄存器。 |
6 |
0x40 |
显示 SSE XMM 寄存器。 |
7 |
0x80 |
(内核模式仅) 显示控件寄存器,例如 CR0、CR2、CR3 和 CR8。 |
8 |
0x100 |
(内核模式仅) 显示描述符和任务状态寄存器。 |
9 |
0x200 |
以浮点显示 AVX YMM 寄存器。 |
10 |
0x400 |
以十进制整数显示 AVX YMM 寄存器。 |
11 |
0x800 |
以十进制整数显示 AVX XMM 寄存器。 |
以下代码示例演示基于 x86 的处理器的 r 命令。
在内核模式下,以下命令显示处理器 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 命令相关联。 有关这些别名的详细信息,请参阅 使用别名。
下面是基于 x86 的处理器上的 r. 命令示例。 调用堆栈的最后一个条目位于命令本身之前。
01004af3 8bec mov ebp,esp
0:000> r.
ebp=0006ffc0 esp=0006ff7c
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈