5/15
Les registres
> Un processeur compte des registres généraux (entiers) ;
> Taille = taille d'un mot machine = taille (générale) ;
> Taille des adresses parfois diérente mais toujours dans
registre entier ;
> Souvent aussi des registres spécialisés (ottants
double) ;
> jeu d'instructions spécialisées (x87, SSE) ;
> autres registres ;
> Espace adressable = 2taille des adresses ;
> Taille = 4Gio en 32 bits, 16 Eio en 64 bits ;
> Adresse contenue dans registre entier.
6/15
Grand et petit-boutien (little/big-endian)
> Adresse 0x00000000, valeur 0x4A3B2C1D ?
> Plusieurs représentations possibles :
>Contenu 0x4A 0x3B 0x2C 0x1D
Adresse 0x03 0x02 0x01 0x00 : petit-boutien
(little endian) ;
>Contenu 0x1D 0x2C 0x3B 0x4A
Adresse 0x03 0x02 0x01 0x00 : grand-boutien
(big endian) ;
> little-endian : 6502, x86, VAX ;
> big-endian : Motorola 68000, SPARC, System/370 ;
> bi-endian : ARM, PowerPC (sauf G5), MIPS ;
> Les bi-boutiens ont un mode par défaut (big-endian pour
PowerPC, little-endian pour IA-64).
7/15
Mots, demi-mots, octets
> Une opération sur un mot (un entier) doit se faire avec
une adresse multiple de 4 ;
> Sinon, erreur dite d'alignement ;
> Il est possible de mettre dans un registre moins qu'un
mot ;
> Pour les demi-mots (16 bits), c'est LoadHalf et
StoreHalf ;
> Les adresses doivent alors être paires ;
> Pour les octets (8 bits), c'est LoadByte et StoreByte ;
> Les adresses peuvent être n'importe quoi ;
> Attention au signe. Si l'octet vaut 200, registre négatif ;
>LoadByteUnsigned pour caractères de code >128.
8/15
L'alignement dans le segment de données
> Chaque donnée prend la taille nécessaire ;
>.word (en MIPS) introduit des données sur des adresses
multiples de la taille des registres entiers, soit 4 octets ;
>.half (en MIPS) introduit des données sur des adresses
multiples de la taille des registres entiers, soit 2 octets ;
>.byte ou .ascii (en MIPS) introduit des données octet
par octet, ainsi que .space ;
> Mode d'alignement automatique des données : espace
interstitiel ;
> Possibilité de le faire manuellement par .align 4 ou
.align 2.