r (Registres)
La commande r affiche ou modifie les registres, les registres à virgule flottante, les indicateurs, les pseudo-registres et les alias de nom fixe.
Mode Utilisateur
[~Thread] r[M Mask|F|X|?] [ Register[:[Num]Type] [= [Value]] ]
r.
Mode Noyau
[Processor] r[M Mask|F|X|Y|YI|?] [ Register[:[Num]Type] [= [Value]] ]
r.
Paramètres
Processeur
Spécifie le processeur à partir duquel les registres sont lus. La valeur par défaut est zéro. Si vous spécifiez processeur, vous ne pouvez pas inclure les registres Register - all sont affichés. Pour plus d’informations sur la syntaxe, consultez Syntaxe multiprocesseur. Vous ne pouvez spécifier les processeurs qu’en mode noyau.
Fil
Spécifie le thread à partir duquel les registres sont lus. Si vous ne spécifiez pas de thread, le thread actuel est utilisé. Pour plus d’informations sur la syntaxe, veuillez consulter la section Syntaxe des threads. Vous pouvez spécifier des threads uniquement en mode utilisateur.
M Masque
Spécifie le masque à utiliser lorsque le débogueur affiche les registres. Le « M » doit être une lettre majuscule. Masque est une somme de bits qui indiquent quelque chose sur l’affichage du registre. La signification des bits dépend du processeur et du mode (consultez les tableaux de la section Remarques suivantes pour plus d’informations). Si vous omettez M, le masque par défaut est utilisé. Vous pouvez définir ou afficher le masque par défaut à l’aide de la commande Rm (Register Mask).
F
Affiche les registres à virgule flottante. La lettre « F » doit être une lettre majuscule. Cette option équivaut à M 0x4.
X
Affiche les registres SSE XMM. Cette option équivaut à M 0x40.
Y
Affiche les registres AVX YMM. Cette option équivaut à M 0x200.
YI
Affiche les registres entiers AVX YMM. Cette option équivaut à M 0x400.
Z
Affiche les registres YMM AVX-512 (zmm0-zmm31) au format à virgule flottante.
ZI
Affiche les registres YMM AVX-512 (zmm0-zmm31) au format entier.
K
Affichez les registres de prédicat Opmask AVX-512 (K0-K7).
?
(Affectation de pseudo-inscription uniquement) Provoque l’acquisition d’informations typées par le pseudo-registre. Tout type est autorisé. Pour plus d’informations sur la syntaxe r ? , consultez Exemples de programme de commandes du débogueur.
Registre
Spécifie l’alias registre, indicateur, pseudo-registre ou nom fixe à afficher ou modifier. Vous ne devez pas précéder ce paramètre par le signe (@). Pour plus d’informations sur la syntaxe, consultez Inscrire la syntaxe.
Num
Spécifie le nombre d’éléments à afficher. Si vous omettez ce paramètre, mais que vous incluez Type, la longueur complète de l’inscription s’affiche.
Type
Spécifie le format de données dans lequel afficher chaque élément d’inscription. Vous pouvez utiliser type uniquement avec des registres vectoriels 64 bits et 128 bits. Vous pouvez spécifier plusieurs types.
Vous pouvez spécifier une ou plusieurs des valeurs suivantes.
Type | Format d'affichage |
---|---|
Ib |
Octet signé |
Ub |
Octet non signé |
Iw |
Mot signé |
Uw |
Mot non signé |
id |
DWORD signé |
Ud |
DWORD non signé |
QI |
Quad-word signé |
uq |
Unsigned quad-word |
f |
Virgule flottante 32 bits |
d |
Virgule flottante 64 bits |
Valeur
Spécifie la valeur à affecter au registre. Pour plus d’informations sur la syntaxe, consultez la syntaxe d’expression numérique.
.
Affiche les registres utilisés dans l’instruction actuelle. Si aucun registre n’est utilisé, aucune sortie n’est affichée.
Environnement
Élément | Description |
---|---|
Modes | Mode utilisateur, mode noyau |
Targets | Live, vidage de la mémoire |
Platforms | Tous |
Informations supplémentaires
Pour plus d’informations sur le contexte de registre et sur d'autres paramètres de contexte, consultez Modification des contextes.
Notes
Si vous ne spécifiez pas Register, la commande r affiche tous les registres sans virgule flottante et la commande rF affiche tous les registres à virgule flottante. Vous pouvez modifier ce comportement à l’aide de la commande rm (Register Mask).
Si vous spécifiez Register mais que vous omettez le signe égal (=) et le paramètre Value , la commande affiche la valeur actuelle du registre.
Si vous spécifiez Register et un signe égal (=) mais que vous omettez Value, la commande affiche la valeur actuelle du registre et invite à entrer une nouvelle valeur.
Si vous spécifiez Register, le signe égal (=) et la valeur, la commande modifie le registre pour contenir la valeur. (Si le mode silencieux est actif, vous pouvez omettre le signe égal. Vous pouvez activer le mode silencieux à l’aide de la commande sq (Définir le mode silencieux). En mode noyau, vous pouvez également activer le mode silencieux à l’aide de la variable d’environnement KDQUIET.)
Vous pouvez spécifier plusieurs registres, séparés par des virgules.
En mode utilisateur, la commande r affiche les registres associés au thread actuel. Pour plus d’informations sur les threads, consultez Contrôle des processus et des threads.
En mode noyau, la commande r affiche les registres associés au contexte de registre actuel. Vous pouvez définir le contexte d’inscription pour qu’il corresponde à un thread, un enregistrement de contexte ou un frame d’interruption spécifique. Seuls les registres les plus importants pour le contexte de registre spécifié sont réellement affichés et vous ne pouvez pas modifier leurs valeurs. Pour plus d’informations sur le contexte d’inscription, consultez Inscrire le contexte.
Lorsque vous spécifiez un registre à virgule flottante par nom, l’option F n’est pas obligatoire. Lorsque vous spécifiez un registre à virgule flottante unique, la valeur hexadécimale brute est affichée en plus de la valeur décimale.
Les bits Mask suivants sont pris en charge pour un processeur x86 ou un processeur x64.
bit | Valeur | Description |
---|---|---|
0 1 | 0x1 0x2 | Affiche les registres entiers de base. (La définition d’un ou des deux de ces bits a le même effet.) |
2 |
0x4 |
Affiche les registres à virgule flottante. |
3 |
0x8 |
Affiche les registres de segments. |
4 |
0x10 |
Affiche les registres MMX. |
5 |
0x20 |
Affiche les registres de débogage. En mode noyau, la définition de ce bit affiche également le registre CR4. |
6 |
0x40 |
Affiche les registres SSE XMM. |
7 |
0x80 |
(Mode noyau uniquement) Affiche les registres de contrôle, par exemple CR0, CR2, CR3 et CR8. |
8 |
0x100 |
(Mode noyau uniquement) Affiche le descripteur et les registres d’état des tâches. |
9 |
0x200 |
Affiche les registres AVX YMM en virgule flottante. |
10 |
0x400 |
Affiche les registres AVX YMM dans des entiers décimaux. |
11 |
0x800 |
Affiche les registres AVX XMM dans des entiers décimaux. |
Les exemples de code suivants montrent les commandes r pour un processeur x86.
En mode noyau, la commande suivante montre les registres pour le processeur 2.
1: kd> 2r
En mode utilisateur, la commande suivante affiche les registres pour le thread 2.
0:000> ~2 r
En mode utilisateur, la commande suivante affiche tous les registres eax associés à tous les threads (dans l’ordre d’index des threads).
0:000> ~* r eax
La commande suivante définit le registre eax pour que le thread actuel 0x000000FF.
0:000> r eax=0x000000FF
La commande suivante définit le registre st0 sur 1.234e+10 (la valeur F est facultative).
0:000> rF st0=1.234e+10
La commande suivante affiche l’indicateur zéro.
0:000> r zf
La commande suivante affiche le registre xmm0 sous la forme de 16 octets non signés, puis affiche le contenu complet du registre xmm1 au format à virgule flottante double précision.
0:000> r xmm0:16ub, xmm1:d
Si la syntaxe actuelle est C++, vous devez précéder les registres par un signe (@). Par conséquent, vous pouvez utiliser la commande suivante pour copier le registre ebx dans le registre eax .
0:000> r eax = @ebx
La commande suivante affiche les pseudo-registres de la même façon que la commande r affiche les registres.
0:000> r $teb
Vous pouvez également utiliser la commande r pour créer des alias de nom fixe. Ces alias ne sont pas des registres ou des pseudo-registres, même s’ils sont associés à la commande r . Pour plus d’informations sur ces alias, consultez Utilisation des alias.
Voici un exemple de commande r. sur un processeur x86. La dernière entrée de la pile des appels précède la commande elle-même.
01004af3 8bec mov ebp,esp
0:000> r.
ebp=0006ffc0 esp=0006ff7c