Terminologie: “des registres” dans la programmation en langage assembleur
J'ai entendu les terminologies: registre, registre hardware, programme de registre,fichier de registre.
Quelle est la différence entre toutes ces? Et dans assebmly, quel est le type du registre EAX? Programme de registre?
Vous devez vous connecter pour publier un commentaire.
Un registre est une zone de stockage à l'intérieur de la CPU. Voici quelques définitions:
ecx
, et plein de multiplication (32bx32b => 64b) nécessite encore une entrée danseax
), maisadd eax, edx
etadd esp, ebp
sont juste deux choix différents de la src/dest pour laadd
instruction. 32 bits x86 a 7 registres. À l'aide deesp
que rien d'autre que le pointeur de pile n'est généralement pas possible / la peine dans le code réel.Un registre est la base de données du périphérique de stockage. Maintenant, ce sont les différences majeures.
Un fichier de registre est généralement une grande collection de registres organisé de telle manière qu'ils sont utilisés pour les calculs. Dans un processeur moderne, tous les calculs sont effectués entre les valeurs stockées dans plusieurs registres dans un fichier de registre.
Un registre hardware fait généralement référence à des registres qui stockent des informations de configuration et les informations de statut. Ce pourrait être pour le processeur ou de certains matériels externes I/O device.
Un programme de registre peut consulter le programme de compteur, un registre spécial qui stocke l'emplacement de la mémoire de l'instruction en cours d'exécution par le processeur.
un registre est un petit peu de mémoire qui se trouve à l'intérieur de la CPU. et est utilisé par de langage d'assemblage pour effectuer diverses tâches.
serait-ce que par le programme inscrivez-vous dire compteur de programme?
Bien, vous avez des registres, alors vous avez registres particulières d'utilisation (par exemple, le compteur de programme, registres), et plusieurs autres (mémoire/registres de segment, ESS).
EAX, EBX, etc. sont la norme registres. Vous pouvez les utiliser pour tout ce que vous voulez. Généralement, la valeur de retour est censé être mis en EAX, mais c'est qu'il est fondamentalement. Ensuite, vous avez le pointeur de pile, EBP, qui pointe vers le début de votre pile. Enfin, vous devez compteur de programme, ce qui souligne l'instruction en cours, EIP. Sur x86, il existe quelques cas particuliers, où les deux registres sont fusionnées lorsque vous faites l'entier de 64 bits calculs. Plus des cas particuliers existent pour les instructions de chaîne. Si vous êtes sur le point d'apprendre de l'assemblée, le plus simple serait de commencer avec un processeur PowerPC, qui a plus de registres, et vous êtes libre de les utiliser toutes, sans restrictions.
Tous ces registres sont bien sûr des registres matériels, qui est, physiquement, ils sont intégrés dans votre CPU 😉 Le lieu où ils sont est appelé un fichier de registre.
L'autre type de registres vous pouvez le voir, c'est si vous avez une machine virtuelle qui utilise des registres (Parrot), vous obtenez "registres virtuels", qui sont ensuite affectés à de vrais registres. Ceci est similaire à ce que vous pouvez faire lors de l'écriture d'un compilateur vous-même, vous assumez une quantité illimitée de registres (qui est, vous en générer un nouveau à chaque utilisation), et faire la transformation de réel s'inscrit dans une phase différente (allocation de registres).
Un "registre hardware" peut aussi faire référence à un emplacement à l'intérieur de certains matériels. Par exemple, un UART (port COM) ressemble à un en forme de D connecteur à 9 ou 25 broches à partir de l'extérieur du gouvernement, mais le pilote de périphérique, il ressemble à plusieurs registres de configuration, un registre de statut, de données et de registres d'accueillir le prochain caractère à envoyer et le dernier caractère reçu. (J'ai laissé de côté beaucoup de détail.)
De l'architecture x86 ces registres sont généralement situées dans un espace d'adresse physique qui est accessible avec les instructions d'e/S. En d'autres plates-formes, il est commun pour les registres du matériel à être mappé à un coin de la mémoire normale de l'espace. Dans les deux cas, l'un des rôles importants d'un système d'exploitation et de ses pilotes de périphérique est d'éviter l'application du code de avoir besoin de connaître les détails de l'endroit où le matériel registres se trouvent et ce qu'ils signifient.
Dans certains types de matériels, la distinction entre la mémoire et les registres du matériel est moins claire. Par exemple, votre carte vidéo contient un bloc de mémoire de la mémoire tampon de trame qui tient la couleur et les valeurs de luminosité de chaque pixel individuel. C'est que la mémoire d'un grand registre hardware ou est-ce juste un tampon qui a un effet secondaire?
Par rapport à la question, il existe deux types de registres que vous devriez considérer:
Les registres matériels sont cadencés (mis à jour le tic-tac d'horloge) et sont utilisés dans le physique de conception de processeur circuits.
Le programme de la tenue des registres de mémoire vive et sont détenus dans un fichier de registre situé dans le CPU. Assemblée/code machine des instructions d'accès à ces registres à travers des noms comme %eax, %esp, %rdi, %edi, etc.
%eax
) ou physique des registres de l'architecture registres sont renommés sur). Il est exact que les "registre" est un autre terme pour "loquet". Dans un "registered ECC DIMM", le terme "social" signifie qu'il y a un loquet entre les puces DRAM et le bus mémoire pour mieux donner de la force du signal lorsque de nombreux modules Dimm sont sur le même canal.