r (Register)

Mit dem r-Befehl werden Register, Gleitkommaregister, Flags, Pseudoregister und Aliase mit festen Namen angezeigt oder geändert.

User-Mode

[~Thread] r[M Mask|F|X|?] [ Register[:[Num]Type] [= [Value]] ] 
r.

Kernel-Mode

[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 den Register-Parameter nicht einschließen– es werden alle Register angezeigt. Weitere Informationen zur Syntax finden Sie unter Multiprozessorsyntax. Sie können Prozessoren nur im Kernelmodus angeben.

Thread
Gibt den Thread an, aus dem die Register gelesen werden. Wenn Sie keinen Thread angeben, wird der aktuelle Thread verwendet. Weitere Informationen zur Syntax finden Sie unter Threadsyntax. Sie können Threads nur im Benutzermodus angeben.

M-Maske
Gibt die Maske an, die verwendet werden soll, wenn der Debugger die Register anzeigt. "M" muss ein Großbuchstaben sein. Mask ist eine Summe von Bits, die etwas über die Registeranzeige angeben. Die Bedeutung der Bits hängt vom Prozessor und dem Modus ab (weitere Informationen finden Sie in den Tabellen im abschnitt "Hinweise"). Wenn Sie M weglassen, wird die Standardmaske verwendet. Sie können die Standardmaske mit dem Befehl Rm (Register Mask) festlegen oder anzeigen.

F
Zeigt die Gleitkommaregister an. "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 Ganzzahlformat an.

K
Zeigen Sie die AvX-512 Opmask-Prädikatregister (K0-K7) an.

?
(Nur Pseudoregistrierungszuweisung) Bewirkt, dass das Pseudoregister typisierte Informationen abruft. Jeder Typ ist zulässig. Weitere Informationen zur Syntax r? finden Sie unter Beispiele für Debuggerbefehle.

Registrieren
Gibt den Anzuzeigenden oder Änderungsalias für Register, Flag, Pseudoregister oder Alias mit festem Namen an. Sie dürfen diesem Parameter nicht mit dem Zeichen at (@) vorangestellt werden. Weitere Informationen zur Syntax finden Sie unter Register Syntax.

Num
Gibt die Anzahl der anzuzeigenden Elemente an. Wenn Sie diesen Parameter weglassen, aber Type einschließen, wird die vollständige Registerlänge angezeigt.

Type
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 mindestens einen der folgenden Werte angeben.

Typ Anzeigeformat

Ib

Signiertes Byte

Ub

Byte ohne Vorzeichen

Iw

Signiertes Wort

uw

Wort ohne Vorzeichen

id

Signierte DWORD

Ud

DWORD ohne Vorzeichen

Iq

Signiertes Vierwort

Uq

Unsigned Quad-Word

f

32-Bit-Gleitkomma

d

64-Bit-Gleitkomma

Wert
Gibt den Wert an, der dem Register zugewiesen werden soll. Weitere Informationen zur Syntax finden Sie unter Syntax für numerische Ausdrücke.

.
Zeigt die Register an, die in der aktuellen Anweisung verwendet werden. Wenn keine Register verwendet werden, wird keine Ausgabe angezeigt.

Environment

Element BESCHREIBUNG
Modi Benutzermodus, Kernelmodus
Targets Liveabbild, Absturzabbild
Plattformen Alle

Zusätzliche Informationen

Weitere Informationen zum Registerkontext und anderen Kontexteinstellungen finden Sie unter Ändern von Kontexten.

Hinweise

Wenn Sie register nicht angeben, zeigt der r-Befehl alle Register ohne Gleitkomma und der rF-Befehl alle Gleitkommaregister an. Sie können dieses Verhalten ändern, indem Sie den Befehl rm (Register Mask) verwenden.

Wenn Sie Register angeben, aber das Gleichheitszeichen (=) und den Value-Parameter weglassen, zeigt der Befehl den aktuellen Wert des Registers an.

Wenn Sie Register und ein Gleichheitszeichen (=) angeben, wert jedoch auslassen, zeigt der Befehl den aktuellen Wert des Registers an und fordert sie zur Eingabe eines neuen Werts auf.

Wenn Sie Register, das Gleichheitszeichen (=) und Wert angeben, ändert der Befehl das Register so, dass es den Wert enthält. (Wenn der stille Modus aktiv ist, können Sie das Gleichheitszeichen weglassen. Sie können den stillen Modus aktivieren, indem Sie den Befehl sq (Stillen Modus festlegen) verwenden. Im Kernelmodus können Sie auch den stillen Modus aktivieren, indem Sie die Umgebungsvariable KDQUIET verwenden.)

Sie können mehrere Register durch Kommas getrennt angeben.

Im Benutzermodus zeigt der r-Befehl 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 Registrierungskontext so festlegen, dass er mit einem bestimmten Thread, Kontextdatensatz oder Trapframe übereinstimmt. Nur die wichtigsten Register für den angegebenen Registerkontext werden tatsächlich angezeigt, und Sie können ihre Werte nicht ändern. Weitere Informationen zum Registrieren des Kontexts finden Sie unter Registrieren des Kontexts.

Wenn Sie ein Gleitkommaregister anhand des Namens angeben, ist die Option F nicht erforderlich. Wenn Sie ein einzelnes Gleitkommaregister angeben, wird der unformatierte Hexadezimalwert 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 grundlegenden ganzzahligen Register an. (Das Festlegen eines oder beider dieser Bits hat die gleiche Auswirkung.)

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 wird beim Festlegen dieses Bits auch das CR4-Register angezeigt.

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 Deskriptor- und Aufgabenstatusregister an.

9

0x200

Zeigt die AVX YMM-Register in 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 Registrierungen für Prozessor 2 an.

1: kd> 2r 

Im Benutzermodus zeigt der folgende Befehl die Registrierungen für Thread 2 an.

0:000> ~2 r 

Im Benutzermodus zeigt der folgende Befehl alle eax-Register an, die allen Threads (in der Threadindexreihenfolge) zugeordnet sind.

0:000> ~* r eax

Der folgende Befehl legt das eax-Register für den aktuellen Thread auf 0x000000FF fest.

0:000> r eax=0x000000FF

Der folgende Befehl legt das st0-Register auf 1,234e+10 fest ( das F ist optional).

0:000> rF st0=1.234e+10

Der folgende Befehl zeigt das Flag null an.

0:000> r zf 

Der folgende Befehl zeigt das xmm0-Register als 16 Bytes ohne Vorzeichen 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 vor Registern 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 r-Befehl Register anzeigt.

0:000> r $teb

Sie können auch den r-Befehl verwenden, um Aliase mit festem Namen zu erstellen. Diese Aliase sind keine Register oder Pseudoregister, obwohl sie dem r-Befehl zugeordnet sind. Weitere Informationen zu diesen Aliasen finden Sie unter Verwenden von Aliasen.

Hier sehen Sie ein Beispiel für den r. -Befehl auf einem x86-basierten Prozessor. Der letzte Eintrag der Aufrufliste ist dem Befehl selbst vorangestellt.

01004af3 8bec            mov     ebp,esp
0:000> r.
ebp=0006ffc0  esp=0006ff7c