Sommaire

Assembleur x86 x86

1. Registres Registres

Le x86 est une architecture où le processeur utilise principalement des registres 32 bits afin de stocker ses informations. Chaque registre contient un nombre codé sur 32 bits, mais ce nombre peut aussi être vu comme deux nombres de 16 bits ou 4 nombres de 8 bits. Dans un souci de compréhension, nous allons illustrer ce point par un exemple.

Le nombre hexadécimal 0xC0DEBA5E est un entier 32 bits. En effet, il peut être représenté par les 32 bits suivants :

Hexadécimal

C

0

D

E

B

A

5

E

Binaire

1100

0000

1101

1110

1011

1010

0101

1110

Il peut être vu comme deux entiers sur 16 bits, 0xC0DE et 0xBA5E ou quatre entiers sur 8 bits 0xC0, 0xDE, 0xBA et 0x5E. Il est important de s’habituer à cette petite gymnastique, car l’assembleur fait souvent un usage abusif de ces différentes représentations.

Pour faciliter les explications, on utilise communément des termes spécifiques pour distinguer ces nombres de différentes tailles, un octet est un nombre sur 8 bits, un mot est un nombre sur 16 bits, soit 2 octets, un double est un nombre sur 32 bits, soit deux mots ou 4 octets.

Les architectures x86 comportent principalement 16 registres différents divisés en cinq types : les registres généraux, les registres d’index, les registres de pointeurs, les registres de segments et pour finir le registre de drapeaux (ou flags).

Registres généraux

Il existe quatre registres de ce type ...