r (registri)
Il comando r visualizza o modifica registri, registri a virgola mobile, flag, pseudoregistri e alias a nome fisso.
Modalità utente
[~Thread] r[M Mask|F|X|?] [ Register[:[Num]Type] [= [Value]] ]
r.
Modalità kernel
[Processor] r[M Mask|F|X|Y|YI|?] [ Register[:[Num]Type] [= [Value]] ]
r.
Parametri
Processore
Specifica il processore da cui vengono letti i registri. Il valore predefinito è zero. Se si specifica Processore, non è possibile includere i registri Register parameter-all vengono visualizzati. Per altre informazioni sulla sintassi, vedere Sintassi multiprocessore. È possibile specificare processori solo in modalità kernel.
Filo
Specifica il thread da cui vengono letti i registri. Se non si specifica un thread, viene usato il thread corrente. Per altre informazioni sulla sintassi, vedere Sintassi dei thread. È possibile specificare thread solo in modalità utente.
M Maschera
Specifica la maschera da utilizzare quando il debugger visualizza i registri. "M" deve essere una lettera maiuscola. Mask è una somma di bit che indicano qualcosa sulla visualizzazione del registro. Il significato dei bit dipende dal processore e dalla modalità (vedere le tabelle nella sezione Osservazioni seguenti per altre informazioni). Se si omette M, viene usata la maschera predefinita. È possibile impostare o visualizzare la maschera predefinita usando il comando Rm (Register Mask).
F
Visualizza i registri a virgola mobile. "F" deve essere una lettera maiuscola. Questa opzione equivale a M 0x4.
X
Visualizza i registri SSE XMM. Questa opzione equivale a M 0x40.
Y
Visualizza i registri AVX YMM. Questa opzione equivale a M 0x200.
YI
Visualizza i registri interi AVX YMM. Questa opzione equivale a M 0x400.
Z
Visualizza i registri AVX-512 YMM (zmm0-zmm31) in formato a virgola mobile.
ZI
Visualizza i registri AVX-512 YMM (zmm0-zmm31) in formato integer.
Okay
Visualizzare i registri dei predicati opmask AVX-512 (K0-K7).
?
(solo assegnazione pseudoregistra) Fa sì che lo pseudoregistro acquisisca informazioni tipate. Qualsiasi tipo è consentito. Per altre informazioni sulla sintassi r?, vedere Debugger Command Program Examples.For more information about the r? syntax, see Debugger Command Program Examples.
Registro
Specifica l'alias register, flag, pseudo-register o fixed-name da visualizzare o modificare. Non è necessario precedere questo parametro con il segno (@) . Per altre informazioni sulla sintassi, vedere Register Syntax.For more information about the syntax, see Register Syntax.
Num
Specifica il numero di elementi da visualizzare. Se si omette questo parametro ma si include Type, viene visualizzata la lunghezza completa del registro.
Digitare
Specifica il formato dei dati in cui visualizzare ogni elemento del registro. È possibile usare Type solo con registri vettoriali a 64 bit e a 128 bit. È possibile specificare più tipi.
È possibile specificare uno o più dei valori seguenti.
Type | Formato di visualizzazione |
---|---|
Ib |
Byte firmato |
Ub |
Byte senza segno |
Iw |
Parola firmata |
Uw |
Parola senza segno |
id |
DWORD firmato |
Ud |
DWORD senza segno |
Iq |
Parola quad firmata |
uq |
Quad-word senza segno |
f |
A virgola mobile a 32 bit |
g |
Virgola mobile a 64 bit |
Valore
Specifica il valore da assegnare al registro. Per altre informazioni sulla sintassi, vedere Sintassi delle espressioni numeriche.
.
Visualizza i registri utilizzati nell'istruzione corrente. Se non vengono utilizzati registri, non viene visualizzato alcun output.
Ambiente
Articolo | Descrizione |
---|---|
Modalità | Modalità utente, modalità kernel |
Target | Live, crash dump |
Piattaforme | Tutte le date |
Informazioni aggiuntive
Per altre informazioni sul contesto di registrazione e altre impostazioni di contesto, vedere Modifica dei contesti.
Osservazioni:
Se non si specifica Register, il comando r visualizza tutti i registri non a virgola mobile e il comando rF visualizza tutti i registri a virgola mobile. È possibile modificare questo comportamento usando il comando rm (Register Mask).
Se si specifica Register ma si omette il segno di uguale (=) e il parametro Value , il comando visualizza il valore corrente del registro.
Se si specifica Register e un segno di uguale (=) ma si omette Valore, il comando visualizza il valore corrente del registro e richiede un nuovo valore.
Se si specifica Register, il segno di uguale (=) e Value, il comando modifica il registro in modo da contenere il valore. Se la modalità non interattiva è attiva, è possibile omettere il segno di uguale. È possibile attivare la modalità non interattiva usando il comando sq (Imposta modalità non interattiva). In modalità kernel, è anche possibile attivare la modalità non interattiva usando la variabile di ambiente KDQUIET.
È possibile specificare più registri, separati da virgole.
In modalità utente, il comando r visualizza i registri associati al thread corrente. Per altre informazioni sui thread, vedere Controllo di processi e thread.
In modalità kernel, il comando r visualizza i registri associati al contesto del registro corrente. È possibile impostare il contesto del registro in modo che corrisponda a un thread, un record di contesto o un frame trap specifico. Vengono visualizzati solo i registri più importanti per il contesto di registro specificato e non è possibile modificarne i valori. Per altre informazioni sul contesto di registrazione, vedere Registrare il contesto.
Quando si specifica un registro a virgola mobile in base al nome, l'opzione F non è obbligatoria. Quando si specifica un singolo registro a virgola mobile, viene visualizzato il valore esadecimale non elaborato oltre al valore decimale.
I bit Mask seguenti sono supportati per un processore basato su x86 o un processore basato su x64.
Bit | valore | Descrizione |
---|---|---|
0 1 | 0x1 0x2 | Visualizza i registri integer di base. L'impostazione di uno o entrambi questi bit ha lo stesso effetto. |
2 |
0x4 |
Visualizza i registri a virgola mobile. |
3 |
0x8 |
Visualizza i registri dei segmenti. |
4 |
0x10 |
Visualizza i registri MMX. |
5 |
0x20 |
Visualizza i registri di debug. In modalità kernel, l'impostazione di questo bit visualizza anche il registro CR4. |
6 |
0x40 |
Visualizza i registri SSE XMM. |
7 |
0x80 |
(solo modalità kernel) Visualizza i registri di controllo, ad esempio CR0, CR2, CR3 e CR8. |
8 |
0x100 |
(solo modalità kernel) Visualizza i registri dello stato del descrittore e dell'attività. |
9 |
0x200 |
Visualizza i registri AVX YMM in virgola mobile. |
10 |
0x400 |
Visualizza i registri AVX YMM in numeri interi decimali. |
11 |
0x800 |
Visualizza i registri AVX XMM in numeri interi decimali. |
Gli esempi di codice seguenti illustrano i comandi r per un processore basato su x86.
In modalità kernel, il comando seguente mostra i registri per il processore 2.
1: kd> 2r
In modalità utente, il comando seguente mostra i registri per il thread 2.
0:000> ~2 r
In modalità utente, il comando seguente visualizza tutti i registri eax associati a tutti i thread (nell'ordine dell'indice del thread).
0:000> ~* r eax
Il comando seguente imposta il registro eax per il thread corrente su 0x000000FF.
0:000> r eax=0x000000FF
Il comando seguente imposta il registro st0 su 1.234e+10 (F è facoltativo).
0:000> rF st0=1.234e+10
Il comando seguente visualizza il flag zero.
0:000> r zf
Il comando seguente visualizza il registro xmm0 come 16 byte senza segno e quindi visualizza il contenuto completo del registro xmm1 in formato a virgola mobile e precisione doppia.
0:000> r xmm0:16ub, xmm1:d
Se la sintassi corrente è C++, è necessario precedere i registri da un segno (@). Pertanto, è possibile usare il comando seguente per copiare il registro ebx nel registro eax .
0:000> r eax = @ebx
Il comando seguente visualizza gli pseudoregistri nello stesso modo in cui il comando r visualizza i registri.
0:000> r $teb
È anche possibile usare il comando r per creare alias con nome fisso. Questi alias non sono registri o pseudoregistri, anche se sono associati al comando r . Per altre informazioni su questi alias, vedere Uso degli alias.
Di seguito è riportato un esempio del comando r. in un processore basato su x86. L'ultima voce dello stack di chiamate precede il comando stesso.
01004af3 8bec mov ebp,esp
0:000> r.
ebp=0006ffc0 esp=0006ff7c