Partager via


Inscrire la syntaxe

Le débogueur peut contrôler les registres et les registres à virgule flottante.

Lorsque vous utilisez un registre dans une expression, vous devez ajouter un arobase ( @ ) avant le registre. Ce signe indique au débogueur que le texte suivant est le nom d’un registre.

Si vous utilisez la syntaxe d’expression MASM, vous pouvez omettre le signe at pour certains registres très courants. Sur les systèmes x86, vous pouvez omettre le signe at pour les registres eax, ebx, ecx, edx, esi, edi, ebp, eip et efl . Toutefois, si vous spécifiez un registre moins courant sans signe, le débogueur tente d’abord d’interpréter le texte en tant que nombre hexadécimal. Si le texte contient des caractères non hexadécimaux, le débogueur interprète ensuite le texte en tant que symbole. Enfin, si le débogueur ne trouve pas de correspondance de symbole, le débogueur interprète le texte en tant que registre.

Si vous utilisez la syntaxe d’expression C++, le signe at est toujours requis.

La commande r (Registers) est une exception à cette règle. Le débogueur interprète toujours son premier argument comme un registre. (Le symbole @ n’est pas requis ni autorisé.) S’il existe un deuxième argument pour la commande r, il est interprété en fonction de la syntaxe d’expression par défaut. Si la syntaxe d’expression par défaut est C++, vous devez utiliser la commande suivante pour copier le registre ebx dans le registre eax .

0:000> r eax = @ebx

Pour plus d’informations sur les registres et les instructions spécifiques à chaque processeur, consultez Architecture du processeur.

Indicateurs sur un processeur x86

Les processeurs x86 utilisent également plusieurs registres 1 bits appelés indicateurs. Pour plus d’informations sur ces indicateurs et la syntaxe que vous pouvez utiliser pour les afficher ou les modifier, consultez les indicateurs x86.

Registres et threads

Chaque thread a ses propres valeurs de registre. Ces valeurs sont stockées dans les registres processeur lorsque le thread est en cours d’exécution et en mémoire lorsqu’un autre thread est en cours d’exécution.

En mode utilisateur, toute référence à un registre est interprétée comme le registre associé au thread actuel. Pour plus d’informations sur le thread actuel, consultez Contrôle des processus et des threads.

En mode noyau, toute référence à un registre est interprétée comme le registre associé au contexte de registre actuel. Vous pouvez définir le contexte de registre pour qu’il corresponde à un thread spécifique, un enregistrement de contexte ou une trame de piège spécifique. Vous ne pouvez afficher que les registres les plus importants pour le contexte de registre spécifié, et vous ne pouvez pas modifier leurs valeurs.