Question

J'ai entendu les terminologies suivantes: registre, registre matériel, registre de programme, fichier de registre.

Quelle est la différence entre tout cela? Et en plus, quel est le type de registre EAX? Registre de programme?

Était-ce utile?

La solution

Un registre est une zone de stockage à l'intérieur de la CPU. Voici quelques définitions:

  • Un fichier de registre est un tableau de registres - voir http://fr.wikipedia.org/fr / Register_file pour une description complète.
  • Le registre eax est le registre d'accumulation de la famille de processeurs Intel x86 - c'est l'endroit où le calcul des nombres entiers est effectué.
  • Le registre de programme (je pense que vous voulez dire compteur de programme) est un registre à usage spécifique qui contient l'adresse de la prochaine instruction de code machine à exécuter.

Autres conseils

Un registre est le périphérique de stockage de données le plus élémentaire. Maintenant, ce sont les principales différences.

Un fichier de registre est généralement un vaste ensemble de registres organisés de manière à être utilisés pour les calculs. Dans un processeur moderne, tous les calculs sont effectués entre des valeurs stockées dans plusieurs registres d'un fichier de registres.

Un registre matériel fait généralement référence à des registres stockant des informations sur la configuration et l’état. Cela peut concerner le processeur ou un périphérique d’E / S matériel externe.

Un registre de programme peut faire référence au compteur de programme, un registre spécial qui stocke l’emplacement mémoire de l’instruction en cours en cours d’exécution par le processeur.

Un registre est un petit peu de mémoire situé dans la CPU. et est utilisé par le langage assembleur pour effectuer diverses tâches.

pourrait-il être que par registre de programme vous voulez dire compteur de programme?

Eh bien, vous avez des registres à usage général, puis des registres à usage spécial (par exemple, les registres de compteurs de programme), et vous en avez d’autres (registres de mémoire / segment, SSE).

EAX, EBX, etc. sont les registres standard à usage général. Vous pouvez les utiliser pour ce que vous voulez. Habituellement, la valeur de retour est supposée être mise dans EAX, mais c'est tout. Ensuite, vous avez le pointeur de pile EBP, qui pointe au début de votre pile. Enfin, vous devez programmer le compteur, qui pointe sur l'instruction en cours, EIP. Sur x86, il existe des cas particuliers, dans lesquels deux registres sont fusionnés lors de calculs de nombres entiers de 64 bits. Des cas plus spéciaux existent pour les instructions de chaîne. Si vous êtes sur le point d’apprendre à assembler, le plus simple serait de commencer par un PowerPC, qui dispose de plus de registres, et vous êtes libre de tous les utiliser sans restrictions.

Tous ces registres sont bien entendu des registres matériels, c’est-à-dire qu’ils sont physiquement intégrés à votre CPU;) L’emplacement où ils se trouvent est appelé fichier de registre.

L’autre type de registre que vous pouvez voir est si vous avez une machine virtuelle qui utilise des registres ( Parrot . ), vous obtenez des "registres virtuels", qui sont ensuite attribués à des registres réels. Ceci est similaire à ce que vous pouvez faire lorsque vous écrivez vous-même un compilateur, vous supposez en principe un nombre illimité de registres (c’est-à-dire que vous en créez un nouveau à chaque utilisation) et effectuez la transformation en registres réels dans une phase différente (allocation de registre). ).

Un "registre de matériel" peut également faire référence à un emplacement dans un périphérique matériel. Par exemple, un UART (port COM) ressemble à un connecteur en forme de D avec 9 ou 25 broches de l'extérieur du boîtier, mais pour le pilote de périphérique, il ressemble à plusieurs registres de configuration, un registre d'état et des registres de données contenant le caractère suivant. envoyer et le dernier caractère reçu. (J'ai omis beaucoup beaucoup de détails ici.)

Dans l’architecture x86, ces registres sont généralement situés dans un espace adresse physique spécial auquel on accède avec des instructions d’entrée / sortie. Sur d'autres plates-formes, les registres matériels sont généralement mappés sur un coin de l'espace mémoire normal. Dans les deux cas, l’un des rôles importants d’un système d’exploitation et de ses pilotes de périphérique consiste à empêcher le code de l’application de connaître le détail des emplacements des registres de matériel et leur signification.

Dans certains types de périphériques matériels, la distinction entre les registres de la mémoire et du matériel est moins claire. Par exemple, votre carte vidéo contient un bloc de mémoire appelé tampon de trame qui contient les valeurs de couleur et de luminosité pour chaque pixel. Cette mémoire est-elle un registre matériel volumineux ou s'agit-il simplement d'un tampon ayant un effet secondaire intéressant?

En ce qui concerne la question, vous devez considérer deux types généraux de registres:

  • registres de programme
  • registres de matériel

Les registres matériels sont synchronisés (mis à jour sur les graduations) et sont utilisés dans la conception physique des circuits du processeur.

Les registres de programme sont une mémoire vive et sont conservés dans un fichier de registres situé dans la CPU. Les instructions de code d’assemblage / machine accèdent à ces registres par des noms tels que% eax,% esp,% rdi,% edi, etc.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top