Introduction à la programmation en assembleur (processeurs 64 bits de la famille 80x86)
2.1. Un mot sur les registres généraux et leur capacité
Définition

En réalité le registre  AL , que nous avons vu rapidement en section 1.3, n'est que la partie basse ( Accumulator Low en anglais) de 8 bits d'un registre de 16 bits nommé  AX ( Accumulator eXtended). La partie haute de 8 bits de ce registre ax se nomme  AH (pour Accumulator High). La version 32 bits de ce registre se nomme  EAX ( Extended Accumulateur eXtended, bits numérotés de 0 à 31) et la version 64 bits du même registre se nomme rax . Autrement dit, eax représente les 32 bits de poids faible de rax (bits 0 à 31), ax représente les 16 bits de poids faible de eax (bits 0 à 15), al représente ses 8 bits de poids faible (bits 0 à7) et ah représente les bits numérotés de 8 à 15 dans la figure suivante :

Figure 2 : Le registre rax (64 bits)
Figure 2 : Le registre rax (64 bits)[Zoom...]

Les processeurs récents de la famille 80x86 (AMD® et Intel®) possèdent 3 autres registres de 64 bits similaires à rax : rbx, rcx et rdx . Ils sont eux aussi décomposables en registres de 8, 16 et 32 bits : ebx, ecx, edx, bx, cx, dx, bh, ch, dh, bl, cl et dl.

Remarque

Il est important de bien comprendre la structure imbriquée des registres et sous-registres : seuls ah et al sont indépendants. Dans les autres cas, une modification d'un des registres a des répercussions sur les autres registres.

On peut légitimement se demander pourquoi les registres ont une structure aussi complexe. En fait, ce choix technologique découle simplement de nécessités économiques : les premiers processeurs de la famille 80x86 avaient un bus de données de 8 bits et un bus d'adresse de 16 bits. Mais à chaque évolution de la taille des bus de données et d'adresses, il fallait garantir que les logiciels écrits pour la génération de processeurs précédente fonctionnent parfaitement avec les nouveaux processeurs. Sans cette garantie, il aurait été nécessaire de recompiler l'ensemble du parc logiciel. De ceci a dérivé une contrainte simple : chaque nouveau jeu d'instructions et de registres doit être un sur-ensemble des anciens jeux d'instructions et de registres.