寄存器语法

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

在表达式中使用寄存器时,应在寄存器之前添加一个 at sign ( @ )。 这个“@”符号告诉调试器以下文本是一个寄存器的名称。

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

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

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

0:000> r eax = @ebx

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

基于 x86 的处理器上的标志

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

寄存器和线程

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

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

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