r (Register)
Mit dem Befehl r werden Register, Gleitkommaregister, Flags, Pseudoregister und Aliase mit fester Bezeichnung angezeigt oder geändert.
Benutzermodus
[~Thread] r[M Mask|F|X|?] [ Register[:[Num]Type] [= [Value]] ]
r.
Kernelmodus
[Processor] r[M Mask|F|X|Y|YI|?] [ Register[:[Num]Type] [= [Value]] ]
r.
Parameter
Prozessor
Gibt den Prozessor an, aus dem die Register gelesen werden. Der Standardwert ist 0 (null). Wenn Sie "Prozessor" angeben, können Sie die Register-Parameter nicht angeben. Alle Register werden angezeigt. Weitere Informationen zur Syntax finden Sie unter Multiprozessorsyntax. Sie können Prozessoren nur im Kernelmodus angeben.
Faden
Gibt den Thread an, aus dem die Register gelesen werden. Wenn Sie keinen Thread angeben, wird der aktuelle Thread verwendet. Weitere Informationen über die Syntax finden Sie unter Thread-Syntax. Sie können Threads nur im Benutzermodus angeben.
M Maske
Gibt die Maske an, die verwendet werden soll, wenn der Debugger die Register anzeigt. Das "M" muss ein Großbuchstaben sein. Die Maske ist eine Summe von Bits, die etwas über die Registeranzeige angeben. Die Bedeutung der Bits hängt vom Prozessor und vom Modus ab (weitere Informationen finden Sie in den Tabellen im folgenden Abschnitt "Hinweise"). Wenn Sie M weglassen, wird die Standardmaske verwendet. Sie können das Standardformat mithilfe des Befehls Rm (RegisterFormat) festlegen oder anzeigen.
F
Zeigt die Gleitkommaregister an. Das "F" muss ein Großbuchstaben sein. Diese Option entspricht M 0x4.
X
Zeigt die SSE XMM-Register an. Diese Option entspricht M 0x40.
Y
Zeigt die AVX YMM-Register an. Diese Option entspricht M 0x200.
YI
Zeigt die AVX YMM-Ganzzahlregister an. Diese Option entspricht M 0x400.
Z
Zeigt die AVX-512 YMM-Register (zmm0-zmm31) im Gleitkommaformat an.
ZI
Zeigt die AVX-512 YMM-Register (zmm0-zmm31) im ganzzahligen Format an.
K
Anzeigen der AVX-512 Opmask-Prädikatregister (K0-K7).
?
(Nur Pseudoregisterzuweisung) Bewirkt, dass das Pseudoregister typierte Informationen abruft. Jeder Typ ist zulässig. Weitere Informationen zur r? -Syntax finden Sie unter Debugger-Befehlsprogrammbeispiele.
Registrieren
Gibt das Register, das Kennzeichen, das Pseudoregister oder den Alias mit festem Namen an, die angezeigt oder geändert werden sollen. Sie dürfen diesem Parameter kein () Vorzeichen@ vorangehen. Weitere Informationen zur Syntax finden Sie unter Registersyntax.
Num
Gibt die Anzahl der anzuzeigenden Elemente an. Wenn Sie diesen Parameter auslassen, aber "Type" einschließen, wird die vollständige Registerlänge angezeigt.
Art
Gibt das Datenformat an, in dem jedes Registerelement angezeigt werden soll. Sie können "Type" nur mit 64-Bit- und 128-Bit-Vektorregistern verwenden. Sie können mehrere Typen angeben.
Sie können einen oder mehrere der folgenden Werte angeben.
Typ | Anzeigeformat |
---|---|
Ib |
Signiertes Byte |
Ub |
Nicht signiertes Byte |
Iw |
Signiertes Wort |
Uw |
Nicht signiertes Wort |
id |
Signiertes DWORD |
Ud |
Nicht signiertes DWORD |
IQ |
Signiertes Quad-Wort |
uq |
Nicht signiertes Quad-Wort |
f |
32-Bit-Gleitkomma |
d |
64-Bit-Gleitkomma |
Value
Gibt den Wert an, der dem Register zugewiesen werden soll. Weitere Informationen zur Syntax finden Sie unter Numerische Ausdruckssyntax.
.
Zeigt die in der aktuellen Anweisung verwendeten Register an. Wenn keine Register verwendet werden, wird keine Ausgabe angezeigt.
Environment
Element | Beschreibung |
---|---|
Modi | Benutzermodus, Kernel-Modus |
Ziele | Live, Crash Dump |
Plattformen | Alle |
Zusätzliche Informationen
Weitere Informationen über den Registerkontext und andere Kontexteinstellungen finden Sie unter Changing Contexts.
Hinweise
Wenn Sie "Register" nicht angeben, zeigt der Befehl r alle Nicht-Gleitkommaregister an, und der Befehl rF zeigt alle Gleitkommaregister an. Sie können dieses Verhalten mithilfe des Befehls rm (RegisterFormat) ändern.
Wenn Sie Register angeben, aber das Gleichheitszeichen (=) und den Parameter Value weglassen, zeigt der Befehl den aktuellen Wert des Registers an.
Wenn Sie "Register" und ein Gleichheitszeichen (=) angeben, aber "Wert" weglassen, zeigt der Befehl den aktuellen Wert des Registers an und fordert einen neuen Wert ein.
Wenn Sie "Register" angeben, ändert der Befehl das Gleichheitszeichen (=) und den Wert, sodass er den Wert enthält. (Wenn der stille Modus aktiv ist, können Sie das Gleichheitszeichen weglassen. Sie können den stillen Modus mit dem Befehl sq (Set Quiet Mode) aktivieren. Im Kernelmodus können Sie den stillen Modus auch mithilfe der KDQUIET-Umgebungsvariable aktivieren.)
Sie können mehrere Register angeben, getrennt durch Kommas.
Im Benutzermodus zeigt der Befehl r Register an, die dem aktuellen Thread zugeordnet sind. Weitere Informationen zu den Threads finden Sie unter Steuern von Prozessen und Threads.
Im Kernelmodus zeigt der Befehl r Register an, die dem aktuellen Registerkontext zugeordnet sind. Sie können den Registerkontext so festlegen, dass er einem bestimmten Thread, Kontextdatensatz oder Trapframe entspricht. Nur die wichtigsten Register für den angegebenen Registerkontext werden tatsächlich angezeigt, und Sie können deren Werte nicht ändern. Weitere Informationen zum Registerkontext finden Sie unter Register Context.
Wenn Sie ein Gleitkommaregister nach Namen angeben, ist die F-Option nicht erforderlich. Wenn Sie ein einzelnes Gleitkommaregister angeben, wird der hexadezimale Rohwert zusätzlich zum Dezimalwert angezeigt.
Die folgenden Mask-Bits werden für einen x86-basierten Prozessor oder einen x64-basierten Prozessor unterstützt.
bit | Wert | Beschreibung |
---|---|---|
0 1 | 0x1 0x2 | Zeigt die einfachen ganzzahligen Register an. (Das Festlegen eines oder beider Bits hat den gleichen Effekt.) |
2 |
0x4 |
Zeigt die Gleitkommaregister an. |
3 |
0x8 |
Zeigt die Segmentregister an. |
4 |
0x10 |
Zeigt die MMX-Register an. |
5 |
0x20 |
Zeigt die Debugregister an. Im Kernelmodus zeigt das Festlegen dieses Bits auch das CR4-Register an. |
6 |
0x40 |
Zeigt die SSE XMM-Register an. |
7 |
0x80 |
(Nur Kernelmodus) Zeigt die Steuerelementregister an, z. B. CR0, CR2, CR3 und CR8. |
8 |
0x100 |
(Nur Kernelmodus) Zeigt die Register des Deskriptors und des Vorgangsstatus an. |
9 |
0x200 |
Zeigt die AVX YMM-Register im Gleitkomma an. |
10 |
0x400 |
Zeigt die AVX YMM-Register in Dezimalzahlen an. |
11 |
0x800 |
Zeigt die AVX XMM-Register in Dezimalzahlen an. |
Die folgenden Codebeispiele zeigen R-Befehle für einen x86-basierten Prozessor.
Im Kernelmodus zeigt der folgende Befehl die Register für Prozessor 2 an.
1: kd> 2r
Im Benutzermodus zeigt der folgende Befehl die Register für Thread 2 an.
0:000> ~2 r
Im Benutzermodus zeigt der folgende Befehl alle Eax-Register an, die allen Threads zugeordnet sind (in Threadindexreihenfolge).
0:000> ~* r eax
Mit dem folgenden Befehl wird das Eax-Register für den aktuellen Thread auf 0x000000FF festgelegt.
0:000> r eax=0x000000FF
Mit dem folgenden Befehl wird das St0-Register auf 1.234e+10 festgelegt (F ist optional).
0:000> rF st0=1.234e+10
Der folgende Befehl zeigt das Null-Kennzeichen an.
0:000> r zf
Der folgende Befehl zeigt das xmm0-Register als 16 nicht signierte Bytes an und zeigt dann den vollständigen Inhalt des xmm1-Registers im Gleitkommaformat mit doppelter Genauigkeit an.
0:000> r xmm0:16ub, xmm1:d
Wenn die aktuelle Syntax C++ lautet, müssen Sie der Registrierung ein At-Zeichen (@) voranstellen. Daher können Sie den folgenden Befehl verwenden, um das ebx-Register in das eax-Register zu kopieren.
0:000> r eax = @ebx
Der folgende Befehl zeigt Pseudoregister auf die gleiche Weise an, wie der Befehl r Register anzeigt.
0:000> r $teb
Sie können auch den Befehl r verwenden, um Aliase mit festen Namen zu erstellen. Diese Aliase sind keine Register oder Pseudoregister, obwohl sie dem Befehl r zugeordnet sind. Weitere Informationen zu diesen Aliasen finden Sie unter Verwenden von Aliasen.
Hier ist ein Beispiel für den Befehl r. auf einem x86-basierten Prozessor. Der letzte Eintrag des Aufrufstapels steht vor dem Befehl selbst.
01004af3 8bec mov ebp,esp
0:000> r.
ebp=0006ffc0 esp=0006ff7c