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