寄存器语法

调试器可以控制寄存器和浮点寄存器。

在表达式中使用寄存器时,应在寄存器前面添加 at 符号 ( @ ) 。 此 at sign 告知调试器以下文本是寄存器的名称。

如果使用 MASM 表达式语法,则可以省略某些非常常见的寄存器的 at 符号。 在基于 x86 的系统上,可以省略 eaxebx、ecxedxesiediebpeipefl 寄存器的 at 符号。 但是,如果指定不带 at 符号的不太常见的寄存器,调试器将首先尝试将文本解释为十六进制数。 如果文本包含非十六进制字符,则调试器接下来会将文本解释为符号。 最后,如果调试器找不到符号匹配项,调试器会将文本解释为寄存器。

如果使用 C++ 表达式语法,则始终需要 at 符号。

r (Registers) 命令是此规则的例外。 调试器始终将其第一个参数解释为寄存器。 (不要求或不允许使用 at 符号。) 如果 r 命令有第二个参数,则根据默认表达式语法对其进行解释。 如果默认表达式语法为 C++,则必须使用以下命令将 ebx 寄存器复制到 eax 寄存器。

0:000> r eax = @ebx

有关特定于每个处理器的寄存器和指令的详细信息,请参阅 处理器体系结构

基于 x86 的处理器上的标志

基于 x86 的处理器还使用多个称为 标志的 1 位寄存器。 有关这些标志以及可用于查看或更改它们的语法的详细信息,请参阅 x86 标志

寄存器和线程

每个线程都有自己的寄存器值。 这些值在线程执行时存储在 CPU 寄存器中,在另一个线程执行时存储在内存中。

在用户模式下,对寄存器的任何引用都解释为与当前线程关联的寄存器。 有关当前线程的详细信息,请参阅 控制进程和线程

在内核模式下,对寄存器的任何引用都解释为与当前寄存器上下文关联的寄存器。 可以设置寄存器上下文以匹配特定的线程、上下文记录或陷阱帧。 只能显示指定寄存器上下文中最重要的寄存器,并且不能更改其值。