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