« Fonctionnement d'un ordinateur/Le modèle mémoire : alignement et boutisme » : différence entre les versions

Contenu supprimé Contenu ajouté
Ligne 23 :
==Boutisme==
 
On peut introduire cet extrait par une analogie avec les langues humaines : certaines s’écrivent de gauche à droite et d'autres de droite à gauche. Dans un ordinateur, c'est pareil avec les octets des mots mémoire : on peut les écrire soit de gauche à droite, soit de droite à gauche.

===Boutisme simple : gros et petit boutisme===

Quand on veut parler de cet ordre d'écriture, on parle de '''boutisme''' (endianness). Sur les '''processeurs gros-boutistes''', l'octet de poids fort de notre donnée est stocké dans la case mémoire ayant l'adresse la plus faible. Sur les '''processeurs petit-boutistes''', c'est l'inverse : l'octet de poids faible de notre donnée est stocké dans la case mémoire ayant l'adresse la plus faible. Certains processeurs sont un peu plus souples : ils laissent le choix du boutisme. Sur ces processeurs, on peut configurer le boutisme en modifiant un bit dans un registre du processeur : il faut mettre ce bit à 1 pour du petit-boutiste, et à 0 pour du gros-boutiste, par exemple. Ces processeurs sont dits '''bi-boutistes'''.
 
<gallery widths=400px heights=400px>
Ligne 30 ⟶ 34 :
Endianessmap fr.svg|Comparaison entre petit et gros-boutiste, ainsi qu'illustration des accès de 8, 16 et 32 bits sur un groupe de 4 octets en gros-boutiste.
</gallery>
 
===Boutisme composé===
 
Certains processeurs sont toutefois un peu plus sadiques : ils utilisent des mots mémoire de plusieurs octets. Dans ce cas, il faut aussi prendre en compte le boutisme des octets dans le mot mémoire, qui peut être gros-boutiste ou petit-boutiste. Si l'ordre des mots mémoire et celui des octets dans le mot mémoire est identique, alors on retrouve du gros- ou petit-boutiste normal. Mais les choses changent si jamais l'ordre des mots mémoire et celui des octets dans le mot mémoire sont différents. Dans ces conditions, on doit préciser un ordre d’inversion des mots mémoire (byte-swap), qui précise si les octets doivent être inversés dans un mot mémoire processeur, en plus de préciser si l'ordre des mots mémoire est petit- ou gros-boutiste. Par exemple, comparons l'ordre des octets entre un nombre codé en gros-boutiste pur, et un nombre gros-boutiste dont les octets sont rangés dans un mot mémoire en petit-boutiste. Le nombre en question est 0x 0A 0B 0C 0D, en hexadécimal, le premier mot mémoire étant indiqué en jaune, le second en blanc.