Syntaxe d’inscription
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 signe at ( @ ) 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 at, le débogueur tente d’abord d’interpréter le texte comme un nombre hexadécimal. Si le texte contient des caractères non hexadécimaux, le débogueur interprète ensuite le texte comme un symbole. Enfin, si le débogueur ne trouve pas de correspondance de symbole, le débogueur interprète le texte comme un 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. (Un signe à l’adresse n’est pas obligatoire ou 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 Indicateurs x86.
Registres et threads
Chaque thread a ses propres valeurs de registre. Ces valeurs sont stockées dans les registres du 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, un enregistrement de contexte ou une trame d’interruption spécifique. Vous pouvez afficher uniquement les registres les plus importants pour le contexte de registre spécifié, et vous ne pouvez pas modifier leurs valeurs.