レジスタの構文
デバッガーは、レジスタと浮動小数点レジスタを制御できます。
式でレジスタを使用する場合は、レジスタの前にアット マーク (@ ) を追加する必要があります。 このアット マークは、次のテキストがレジスタの名前であることをデバッガーに伝えます。
MASM 式構文を使用している場合は、特定の非常に一般的なレジスタのアット マークを省略できます。 x86 ベースのシステムでは、eax、ebx、ecx、edx、esi、edi、ebp、eip、および efl レジスタのアット マークを省略できます。 ただし、一般的ではないレジスタをアット マークなしで指定すると、デバッガーは最初にテキストを 16 進数として解釈しようとします。 テキストに 16 進数以外の文字が含まれている場合、デバッガーは次にテキストをシンボルとして解釈します。 最後に、デバッガーが一致するシンボルを見つけられなかった場合、デバッガーはテキストをレジスタとして解釈します。
C++ 式構文を使用している場合は、アット マークが常に必要です。
r (レジスタ) コマンドは、この規則の例外です。 デバッガーは常に最初の引数をレジスタとして解釈します。 (アットマークは必須ではなく、許可もされません)。r コマンドに 2 番目の引数がある場合、それは既定の式構文に従って解釈されます。 既定の式構文が C++ の場合は、次のコマンドを使用して ebx レジスタを eax レジスタにコピーする必要があります。
0:000> r eax = @ebx
各プロセッサに固有のレジスタと命令の詳細については、「プロセッサ アーキテクチャ」を参照してください。
x86 ベースのプロセッサ上のフラグ
x86 ベースのプロセッサは、フラグと呼ばれるいくつかの 1 ビット レジスタも使用します。 これらのフラグと、それらを表示または変更するために使用できる構文の詳細については、「x86 フラグ」を参照してください。
レジスタとスレッド
各スレッドには独自のレジスタ値があります。 これらの値は、スレッドの実行中は CPU レジスタに保存され、別のスレッドの実行中はメモリに保存されます。
ユーザー モードでは、レジスタへの参照はすべて、現在のスレッドに関連付けられているレジスタとして解釈されます。 現在のスレッドの詳細については、「プロセスとスレッドの制御」を参照してください。
カーネル モードでは、レジスタへの参照はすべて、現在のレジスタ コンテキストに関連付けられたレジスタとして解釈されます。 特定のスレッド、コンテキスト レコード、またはトラップ フレームに一致するようにレジスタ コンテキストを設定できます。 指定したレジスタ コンテキストの最も重要なレジスタのみを表示でき、その値を変更することはできません。