/ / Comment le processeur peut-il avoir des registres supplémentaires en mode 64 bits? - architecture, registres de processeurs

Comment le processeur peut-il avoir des registres supplémentaires en mode 64 bits? - architecture, registres de processeurs

C’est une question de très bas niveau sur le processeur modernearchitecture. J'ai appris que je pouvais utiliser plusieurs registres supplémentaires en mode 64 bits. telle que l’architecture ARM a des registres universels r15-r31, pour les registres universels Intel / AMD r8-r15 les registres SIMD vont également doubler comme xmm8-xmm15 (ou ymm8-ymm15)

Quelqu'un sait-il comment cela est-il possible uniquement en mode 64 bits?

Je ne m'attends pas à une réponse simple comme "Ils ont juste construit plus de registres" En mode 32 bits, je ne peux pas utiliser ce registre supplémentaire. Même ces registres supplémentaires ne sont pas tout à fait utilisés par les compilateurs modernes.

Réponses:

0 pour la réponse № 1

(Je ne suis pas familier avec arm64, donc j’utilise X86-64 commeExemple.) La sélection de registre est codée en instructions binaires. Les instructions 32 bits ne peuvent utiliser que les registres de 80386 et ne peuvent pas utiliser d'autres registres. De plus, IA-32 (x86-32) utilise 3 bits pour représenter les registres, mais x86-64 nécessite 4 bits pour représenter tout registres, vous avez besoin d'un autre bit pour accéderregistres supplémentaires, et ce bit est dans l'octet REX dans les instructions 64 bits. Cela signifie que, pour utiliser des registres supplémentaires, l'octet REX est nécessaire et que REX fait partie des instructions 64 bits; il n'y a pas d'octet REX dans les instructions 32 bits, vous ne pouvez donc pas utiliser de règles supplémentaires en 32 bits.

Dans les instructions SIMD, vous avez également besoin du (des) bit (s) d’extension pour accéder à davantage de registres.


Pour ARM64, je connais un peu: son fichier de registres et son jeu d'instructions sont nouveaux, pas une extension d'ARM 32 bits (X86-64 est une extension de X86-32). Le processeur ARM64 peut exécuter des instructions héritées ARM 32 bits pour des raisons de compatibilité, mais il s’agit du travail du processeur et non de celui de l’architecture (ISA). Début ARM64 processeur peut exécuter deux architectures de jeux d'instructions pour prendre en charge les anciens logiciels, mais à l'avenir, la prise en charge de l'architecture 32 bits pourrait être abandonnée, ne laissant que 64 bits (ARM64).