Assemblée des registres de l'architecture 64 bits
À la suite de la réponse à propos de l'assemblage des registres de tailles:
-
Tout d'abord, quelles sont les dimensions
eax
,ax
,ah
et de leurs homologues, dans l'architecture 64 bits? Comment accéder à un registre unique de l'octet, et comment accéder à tous les 64 bits du registre de huit octets?J'aimerais attention pour les deux x86-64 (x64) et Itanium processeurs.
-
Deuxièmement, quelle est la bonne façon d'utiliser les quatre registres pour la tenue de la première des quatre paramètres dans les appels de fonction dans la nouvelle convention d'appel?
hmm
eax == 32bits
ax == 16bits
ah|al == 8bits
, c'est toujours comme cela, x64 ajoute de nouveaux registres, dans les 16 bits de jours nous n'avions ax & al & ah
puis quand 32bits est venu autour de lui est ajoutée d'une manière qui n'a pas vraiment d'effet de la façon dont vous l'adresse de 16 bits ou 8 bits des registres, les nouveaux registres en x64 (64 bits des registres qui se chevauchent, eax qui chevauche ax, etc) commencer avec un r
donc rax
rbx
et ainsi de suite. voir ici pour plus d'informations.
OriginalL'auteur Reflection | 2013-12-17
Vous devez vous connecter pour publier un commentaire.
Avec l'ancien nom tous les registres restent de la même taille. Pour accéder aux registres 64 bits vous utilisez le nouveau nom avec R-préfixe comme rax, rbx...
Enregistrer des noms ne changent pas si vous venez d'utiliser l'octet registres (al, bl, cl, dl, ah, bh, ch, dh) pour le LSB et MSB de l'ax, bx, cx, dx comme avant.
Il y a aussi des 8 nouveaux registres appelé r8-r15. Vous pouvez accéder à leur Lsb en ajoutant le suffixe
b
(oul
si vous êtes en utilisant AMD). Par exemple, r8b, r9b... Vous pouvez également utiliser le bit de poids faible de l'esi, edi, esp, ebp par les noms sil, dil, spl, bpl avec la nouvelle REX préfixe, mais vous ne pouvez pas utiliser en même temps avec ah, bh, ch ou dh.De même, les nouveaux registres les plus faibles mot ou double mot peut être consulté par le suffixe
w
oud
.Quels sont les noms des nouveaux processeurs X86_64 registres?
Concernant la convention d'appel, sur un système, il n'y a une seule convention1.
Sur Windows:
1Depuis MSVC 2013 il y a également un nouvelle convention sur Windows appelé
__vectorcall
.x86_64 conventions d'appel
Ceux qui sont les plus bases de la x86_64. Vous devez également lire ce
Otoh, que Itanium est un complètement différente de l'architecture et n'a aucun rapport avec x86_64 que ce soit. C'est une pure architecture 64 bits, donc tous les registres sont de 64 bits et non 32 bits ou une version plus petite disponible. Il y a beaucoup de registres:
Lire plus sur Quelle est la différence entre 64 et IA-64?
OriginalL'auteur phuclv