Partilhar via


r (Registros)

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

Modo de usuário

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

Modo kernel

[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 multiprocessador. Você pode especificar processadores somente no modo kernel.

Fio
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, confira Sintaxe do thread. Você pode especificar threads somente no modo de usuário.

O Máscara
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 do 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 (Registrar Máscara).

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

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

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

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

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

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

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

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

Registro
Especifica o registro, sinalizador, pseudo-registro ou alias de nome fixo a ser exibido ou modificado. Você não deve preceder esse parâmetro com o sinal de arroba (@). Para obter mais informações sobre a sintaxe, consulte Sintaxe de registro.

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

Tipo
Especifica o formato de dados para exibir cada elemento de registro. Você pode usar Type somente com registradores vetoriais de 64 bits e 128 bits. Você pode especificar vários tipos.

Você pode especificar um ou mais dos seguintes valores.

Tipo Formato de exibição

Ib

Byte assinado

Ub

Byte não assinado

Iw

Palavra assinada

Uw

Palavra não assinada

id

DWORD assinado

Ud

DWORD não assinado

QI

Palavras quádruplas assinadas

uq

Palavras quádruplas não assinadas

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 mais informações sobre o contexto de registro e outras configurações de contexto, consulte Como alterar contextos.

Comentários

Se você não especificar Register, 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 (Register Mask).

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

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

Se você especificar Register, o sinal de igual (=) e Value, 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 Contexto de registro.

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 de máscara a seguir são suportados 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 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 de estado do descritor e da tarefa.

9

0x200

Exibe os registros AVX YMM em ponto flutuante.

10

0x400

Exibe os registros AVX YMM em números inteiros decimais.

11

0x800

Exibe os registros AVX XMM em números 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 (na ordem de índice de thread).

0:000> ~* r eax

O comando a seguir define o registro eax para o 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, em seguida, 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 arroba (@). 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