Menu
Coddy logo textTech

Registres vs Mémoire

Fait partie de la section Fondamentaux du Journey Assembly de Coddy. Leçon 3 sur 45.

Vous avez maintenant appris deux endroits où les données peuvent être stockées dans un ordinateur :

  • Registres : de minuscules cases de stockage à l’intérieur du CPU
  • Mémoire (RAM) : une immense grille de cases numérotées à l’extérieur du CPU

Mais pourquoi y a-t-il deux emplacements ? Pourquoi le processeur ne peut-il pas simplement travailler directement avec la mémoire ?

La réponse est la vitesse. Les registres sont extrêmement rapides parce qu’ils se trouvent à l’intérieur du CPU. La mémoire est plus lente parce qu’elle se trouve à l’extérieur. Le CPU peut accéder à un registre en un seul cycle, mais l’accès à la mémoire prend beaucoup plus de temps.

Comparaison côte à côte :

FonctionnalitéRegistresMémoire (RAM)
EmplacementÀ l’intérieur du CPUÀ l’extérieur du CPU
VitesseExtrêmement rapide (1 cycle)Plus lente (de nombreux cycles)
Nombre d’emplacements de stockageTrès peu (16-32 sur x86-64)Des millions ou des milliards
Taille de chaque emplacement8 octets (64 bits)1 octet
Comment y accéderPar nom (rax, rbx, rcx...)Par adresse (1000, msg, buffer)
Volatile ?Oui (disparaît lorsque l’alimentation est coupée)Oui (disparaît lorsque l’alimentation est coupée)

La règle la plus importante en assembleur :

Le processeur ne peut pas travailler directement avec les données en mémoire. Les données doivent d’abord être chargées dans des registres.

Ce n’est pas facultatif. C’est ainsi que le processeur est conçu. Chaque addition, chaque comparaison, chaque déplacement de données doit passer par un registre.

Le modèle en trois étapes que vous utiliserez constamment :

ÉtapeCe qui se passeExemple
1. LOADCopier les données de la mémoire dans un registremov rax, [count]
2. WORKFaire quelque chose avec le registreadd rax, 5
3. STORERecopier le résultat dans la mémoire (si nécessaire)mov [result], rax

Que se passe-t-il si vous oubliez cette règle ?

Si vous essayez d’additionner deux nombres qui se trouvent tous les deux en mémoire, l’assembleur vous signalera une erreur. Le CPU ne peut tout simplement pas le faire. Vous devez d’abord les charger dans des registres.

Essayez vous-même

Cette leçon ne comprend pas de défi de code.

quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Fondamentaux

Entraînez-vous par vous-même : Playground Assembly