Partager via


À propos de la fenêtre Registres dans Visual Studio (C#, C++, Visual Basic, F#)

La fenêtre Registres est disponible uniquement si le débogage au niveau de l’adresse est activé dans la boîte de dialogue Options , nœud Débogage .

Les registres sont des emplacements spéciaux au sein d’un processeur (cpu) utilisés pour stocker de petites quantités de données que le processeur traite activement. La compilation ou l’interprétation du code source génère des instructions qui déplacent les données de la mémoire dans les registres et de nouveau, selon les besoins. L’accès aux données dans les registres est très rapide par rapport à l’accès aux données en mémoire, de sorte que le code qui permet au processeur de conserver des données dans un registre et d’y accéder à plusieurs reprises tend à s’exécuter plus rapidement que le code qui exige que le processeur charge et décharge constamment les registres. Pour faciliter la conservation des données dans les registres et l’exécution d’autres optimisations, vous devez éviter d’utiliser des variables globales et de s’appuyer sur des variables locales autant que possible. Le code écrit de cette façon est dit avoir une bonne localité de référence. Dans certains langages, tels que C/C++, le programmeur peut déclarer une variable d’inscription, ce qui indique au compilateur d’essayer de conserver la variable dans un registre à tout moment. Pour plus d’informations, consultez Inscrire le mot clé.

Les registres peuvent être divisés en deux types : usage général et usage spécial. Les registres à usage général contiennent des données pour des opérations générales, telles que l’ajout de deux nombres ensemble ou le référencement d’un élément dans un tableau. Les registres à usage spécial ont des objectifs spécifiques et une signification spécialisée. Un bon exemple est le registre du pointeur de pile, que le processeur utilise pour suivre la pile des appels du programme. En tant que programmeur, vous ne manipulerez probablement pas directement le pointeur de pile. Toutefois, il est essentiel au bon fonctionnement de votre programme, car sans le pointeur de pile, le processeur ne sait pas où revenir à la fin d’un appel de fonction.

La plupart des registres à usage général ne contiennent qu’un seul élément de données. Par exemple, un entier unique, un nombre à virgule flottante ou un élément d’un tableau. Certains processeurs plus récents ont des registres plus volumineux, appelés registres vectoriels, qui peuvent contenir un petit tableau de données. Étant donné qu’ils contiennent tant de données, les registres vectoriels permettent d’effectuer des opérations impliquant des tableaux très rapidement. Les registres vectoriels ont d’abord été utilisés sur des supercomputers coûteux et hautes performances, mais sont désormais disponibles sur les microprocesseurs où ils sont utilisés pour tirer un grand avantage des opérations graphiques intensives.

Un processeur a généralement deux ensembles de registres à usage général, un optimisé pour les opérations à virgule flottante et l’autre pour les opérations entières. Ces registres sont appelés registres à virgule flottante et entiers.

Le code managé est compilé au moment de l’exécution en code natif qui accède aux registres physiques du microprocesseur. La fenêtre Registres affiche ces registres physiques pour le Common Language Runtime ou le code natif. La fenêtre Registres n’affiche pas les informations d’inscription pour le script ou l’application SQL, car le script et SQL sont des langages qui ne prennent pas en charge le concept des registres.

Pour plus d’informations sur l’affichage de la fenêtre Registres , consultez Utilisation de la fenêtre Registres.

Lorsque vous examinez la fenêtre Registres , vous verrez des entrées telles que EAX = 003110D8.

Le symbole à gauche du signe = est le nom du registre, EAX, dans ce cas. Le nombre à droite du signe représente le contenu du = registre.

La fenêtre Registres vous permet d’afficher plus que simplement le contenu d’un registre. Lorsque vous êtes en mode arrêt dans le code natif, vous pouvez cliquer sur le contenu d’un registre et modifier la valeur. Ce n’est pas quelque chose que vous devez faire au hasard. Sauf si vous comprenez le registre que vous modifiez et que les données qu’il contient, le résultat de l’édition insouciante est susceptible d’être un plantage du programme ou d’une autre conséquence non souhaitée. Malheureusement, une explication détaillée des ensembles de registres des différents processeurs intel et compatibles Intel va bien au-delà de l’étendue de cette brève introduction.

Inscrire des groupes

Pour réduire l’encombrement, la fenêtre Registres organise les registres dans des groupes. Si vous cliquez avec le bouton droit sur la fenêtre Registres , vous verrez un menu contextuel contenant une liste de groupes, que vous pouvez afficher ou masquer comme vous le souhaitez.

Registre de fanions

Pour les processeurs Intel x86, vous pouvez voir les indicateurs suivants dans la fenêtre Registres . Pendant une session de débogage, vous pouvez également modifier ces indicateurs.

Flag Définir la valeur
Overflow OV = 1
Direction UP = 1
Interrompre EI = 1
Signer PL = 1
Zéro ZR = 1
Transport auxiliaire AC = 1
Parity PE = 1
Porter CY = 1