r (Registros)

O comando r exibe ou modifica registros, registros de ponto flutuante, sinalizadores, pseudo-registros e aliases de nome fixo.

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.

Parâmetros

Processador
Especifica o processador do qual os registros são lidos. O valor padrão é zero. Se você especificar Processador, não poderá incluir o parâmetro Register – todos os registros serão exibidos. Para obter mais informações sobre a sintaxe, consulte Sintaxe de vários processadores. Você pode especificar processadores somente no modo kernel.

Thread
Especifica o thread do qual os registros são lidos. Se você não especificar um thread, o thread atual será usado. Para obter mais informações sobre a sintaxe, consulte Sintaxe de thread. Você pode especificar threads somente no modo de usuário.

MáscaraM
Especifica a máscara a ser usada quando o depurador exibe os registros. O "M" deve ser uma letra maiúscula. Mask é uma soma de bits que indicam algo sobre a exibição de registro. O significado dos bits depende do processador e do modo (consulte as tabelas na seção Comentários a seguir para obter mais informações). Se você omitir M, a máscara padrão será usada. Você pode definir ou exibir a máscara padrão usando o comando Rm (Máscara de Registro).

F
Exibe os registros de ponto flutuante. O "F" deve ser uma letra maiúscula. Essa opção é equivalente a M 0x4.

X
Exibe os registros do SSE XMM. Essa opção é equivalente a M 0x40.

Y
Exibe os registros do AVX YMM. Essa opção é equivalente a M 0x200.

YI
Exibe os registros inteiros do AVX YMM. Essa opção é equivalente a M 0x400.

Z
Exibe os registros do AVX-512 YMM (zmm0-zmm31) no formato de ponto flutuante.

ZI
Exibe os registros do AVX-512 YMM (zmm0-zmm31) no formato inteiro.

K
Exiba os registros de predicado do Opmask AVX-512 (K0-K7).

?
(Somente atribuição de pseudo-registro) Faz com que o pseudo-registro adquira informações digitados. Qualquer tipo é permitido. Para obter mais informações sobre a sintaxe r? , consulte Exemplos do programa de comando do depurador.

Registrar
Especifica o registro, o sinalizador, o pseudo-registro ou o alias de nome fixo a serem exibidos ou modificados. Você não deve preceder esse parâmetro com o sinal em (@). Para obter mais informações sobre a sintaxe, consulte Registrar sintaxe.

Núm
Especifica o número de elementos a serem exibidos. Se você omitir esse parâmetro, mas incluir Tipo, o comprimento do registro completo será exibido.

Type
Especifica o formato de dados no qual cada elemento de registro será exibido. Você pode usar Type somente com registros de vetor de 64 bits e 128 bits. Você pode especificar vários tipos.

Você pode especificar um ou mais dos valores a seguir.

Tipo Formato de exibição

Ib

Byte assinado

Ub

Byte sem sinal

Iw

Palavra assinada

uw

Palavra sem sinal

id

DWORD assinado

Ud

DWORD sem sinal

Qi

Palavra quádrupla assinada

Uq

Palavra quádrupla sem sinal

f

Ponto flutuante de 32 bits

d

Ponto flutuante de 64 bits

Valor
Especifica o valor a ser atribuído ao registro. Para obter mais informações sobre a sintaxe, consulte Sintaxe de expressão numérica.

.
Exibe os registros usados na instrução atual. Se nenhum registro for usado, nenhuma saída será exibida.

Ambiente

Item Descrição
Modos Modo de usuário, modo kernel
Destinos Ao vivo, despejo de memória
Plataformas Tudo

Informações adicionais

Para obter mais informações sobre o contexto de registro e outras configurações de contexto, consulte Alterando contextos.

Comentários

Se você não especificar Registrar, o comando r exibirá todos os registros de ponto não flutuante e o comando rF exibirá todos os registros de ponto flutuante. Você pode alterar esse comportamento usando o comando rm (Máscara de Registro).

Se você especificar Registrar , mas omitir o sinal de igual (=) e o parâmetro Value , o comando exibirá o valor atual do registro.

Se você especificar Registrar e um sinal de igual (=), mas omitir Value, o comando exibirá o valor atual do registro e solicitará um novo valor.

Se você especificar Registrar, o sinal de igual (=) e Valor, o comando alterará o registro para conter o valor. (Se o modo silencioso estiver ativo, você poderá omitir o sinal de igual. Você pode ativar o modo silencioso usando o comando sq (Definir Modo Silencioso). No modo kernel, você também pode ativar o modo silencioso usando a variável de ambiente KDQUIET.)

Você pode especificar vários registros, separados por vírgulas.

No modo de usuário, o comando r exibe registros associados ao thread atual. Para obter mais informações sobre os threads, consulte Controlando processos e threads.

No modo kernel, o comando r exibe registros associados ao contexto de registro atual. Você pode definir o contexto de registro para corresponder a um thread específico, registro de contexto ou quadro de interceptação. Somente os registros mais importantes para o contexto de registro especificado são realmente exibidos e você não pode alterar seus valores. Para obter mais informações sobre o contexto de registro, consulte Registrar Contexto.

Quando você especifica um registro de ponto flutuante por nome, a opção F não é necessária. Quando você especifica um único registro de ponto flutuante, o valor hexadecimal bruto é exibido além do valor decimal.

Os bits mask a seguir têm suporte para um processador baseado em x86 ou um processador baseado em x64.

bit Valor Descrição

0 1

0x1 0x2

Exibe os registros inteiros básicos. (Definir um ou ambos os bits tem o mesmo efeito.)

2

0x4

Exibe os registros de ponto flutuante.

3

0x8

Exibe os registros de segmento.

4

0x10

Exibe os registros MMX.

5

0x20

Exibe os registros de depuração. No modo kernel, a configuração desse bit também exibe o registro CR4.

6

0x40

Exibe os registros do SSE XMM.

7

0x80

(Somente modo kernel) Exibe os registros de controle, por exemplo, CR0, CR2, CR3 e CR8.

8

0x100

(Somente modo kernel) Exibe os registros do descritor e do estado da tarefa.

9

0x200

Exibe os registros do AVX YMM no ponto flutuante.

10

0x400

Exibe os registros do AVX YMM em inteiros decimais.

11

0x800

Exibe os registros do AVX XMM em inteiros decimais.

Os exemplos de código a seguir mostram comandos r para um processador baseado em x86.

No modo kernel, o comando a seguir mostra os registros do processador 2.

1: kd> 2r 

No modo de usuário, o comando a seguir mostra os registros do thread 2.

0:000> ~2 r 

No modo de usuário, o comando a seguir exibe todos os registros eax associados a todos os threads (em ordem de índice de thread).

0:000> ~* r eax

O comando a seguir define o registro eax do thread atual como 0x000000FF.

0:000> r eax=0x000000FF

O comando a seguir define o registro st0 como 1.234e+10 (o F é opcional).

0:000> rF st0=1.234e+10

O comando a seguir exibe o sinalizador zero.

0:000> r zf 

O comando a seguir exibe o registro xmm0 como 16 bytes não assinados e exibe o conteúdo completo do registro xmm1 no formato de ponto flutuante de precisão dupla.

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

Se a sintaxe atual for C++, você deverá preceder os registros por um sinal de at (@). Portanto, você pode usar o comando a seguir para copiar o registro ebx para o registro eax .

0:000> r eax = @ebx

O comando a seguir exibe pseudo-registros da mesma forma que o comando r exibe registros.

0:000> r $teb

Você também pode usar o comando r para criar aliases de nome fixo. Esses aliases não são registros ou pseudo-registros, mesmo que estejam associados ao comando r . Para obter mais informações sobre esses aliases, consulte Usando aliases.

Aqui está um exemplo do comando r. em um processador baseado em x86. A última entrada da pilha de chamadas precede o próprio comando.

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