r (Registri)

Il comando r visualizza o modifica i registri, i registri a virgola mobile, i flag, i pseudoregistri e gli alias di nome fisso.

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.

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.

Thread
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 thread. È possibile specificare thread solo in modalità utente.

Maschera M
Specifica la maschera da usare quando il debugger visualizza i registri. Il valore "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. Il valore "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 intero.

K
Visualizzare i registri predicati opmask avX-512 (K0-K7).

?
(solo assegnazione di pseudoregistro) Determina l'acquisizione di informazioni tipite da parte del pseudoregistrato. Qualsiasi tipo è consentito. Per altre informazioni sulla sintassi r? vedere Esempi di programma di comando debugger.

Registro
Specifica l'alias di registro, flag, pseudoregistro o nome fisso da visualizzare o modificare. Non è necessario precedere questo parametro con il segno (@). Per altre informazioni sulla sintassi, vedere Registrare la sintassi.

Num
Specifica il numero di elementi da visualizzare. Se si omette questo parametro ma si include Type, viene visualizzata la lunghezza del registro completo.

Digitare
Specifica il formato 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.

Tipo Formato di visualizzazione

Ib

Signed Byte

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

Virgola mobile a 32 bit

d

Virgola mobile a 64 bit

Valore
Specifica il valore da assegnare al registro. Per altre informazioni sulla sintassi, vedere Sintassi dell'espressione numerica.

.
Visualizza i registri usati nell'istruzione corrente. Se non vengono usati registri, non viene visualizzato alcun output.

Ambiente

Elemento Descrizione
Modalità Modalità utente, modalità kernel
Targets Dump live, arresto anomalo
Piattaforme Tutti

Informazioni aggiuntive

Per altre informazioni sul contesto di registrazione e altre impostazioni di contesto, vedere Modifica dei contesti.

Commenti

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 per contenere il valore. Se la modalità tranquilla è attiva, è possibile omettere il segno di uguale. È possibile attivare la modalità tranquilla usando il comando sq (Imposta modalità tranquilla). In modalità kernel è anche possibile attivare la modalità tranquilla 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 dei processi e dei thread.

In modalità kernel il comando r visualizza i registri associati al contesto di registrazione corrente. È possibile impostare il contesto di registrazione in modo che corrisponda a un thread, un record di contesto o un frame di trap specifico. Vengono visualizzati solo i registri più importanti per il contesto di registrazione specificato e non è possibile modificare i relativi valori. Per altre informazioni sul contesto di registrazione, vedere Registrare contesto.

Quando si specifica un registro a virgola mobile per nome, l'opzione F non è necessaria. 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 interi di base. L'impostazione di uno o entrambi i bit ha lo stesso effetto.

2

0x4

Visualizza i registri a virgola mobile.

3

0x8

Visualizza i registri del segmento.

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 il descrittore e i registri dello stato dell'attività.

9

0x200

Visualizza i registri AVX YMM in virgola mobile.

10

0x400

Visualizza i registri AVX YMM in interi decimali.

11

0x800

Visualizza i registri AVX XMM in interi decimali.

Gli esempi di codice seguenti mostrano 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 thread 2.

0:000> ~2 r 

In modalità utente, il comando seguente visualizza tutti i registri eax associati a tutti i thread (nell'ordine di 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 (il valore 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 a precisione doppia.

0:000> r xmm0:16ub, xmm1:d 

Se la sintassi corrente è C++, è necessario precedere i registri da un segno (@). È quindi 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 di nome fisso. Questi alias non sono registri o pseudoregistri, anche se sono associati al comando r . Per altre informazioni su questi alias, vedere Uso di alias.

Ecco 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