Registres vs Mémoire
Fait partie de la section Fondamentaux du Journey Assembly de Coddy. Leçon 3 sur 45.
Vous avez maintenant découvert deux endroits où les données peuvent être stockées dans un ordinateur :
- Registres : de minuscules boîtes de stockage à l’intérieur du CPU
- Mémoire (RAM) : une immense grille d’emplacements numérotés à l’extérieur du CPU
Mais pourquoi y a-t-il deux emplacements ? Pourquoi le CPU ne peut-il pas simplement travailler directement avec la mémoire ?
La réponse est la rapidité. 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é | Registres | Mémoire (RAM) |
|---|---|---|
| Emplacement | À l’intérieur du CPU | À l’extérieur du CPU |
| Vitesse | Extrêmement rapide (1 cycle) | Plus lente (de nombreux cycles) |
| Nombre d’emplacements de stockage | Très peu (16-32 sur x86-64) | Des millions ou des milliards |
| Taille de chaque emplacement | 8 octets (64 bits) | 1 octet |
| Comment y accéder | Par 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 CPU ne peut pas travailler directement avec des 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. Toute addition, toute comparaison, tout déplacement de données doit passer par un registre.
Le modèle en trois étapes que tu utiliseras constamment :
| Étape | Ce qui se passe | Exemple |
|---|---|---|
| 1. LOAD | Copier les données de la mémoire dans un register | mov rax, [count] |
| 2. WORK | Faire quelque chose avec le register | add rax, 5 |
| 3. STORE | Recopier le result 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’add deux nombres qui se trouvent tous les deux dans la memory, l’assembleur vous signalera une erreur. Le CPU ne peut tout simplement pas le faire. Vous devez d’abord les charger dans des register.
Essayez vous-même
Cette leçon ne comprend pas de défi de code.
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
1La Machine
Qu'est-ce qu'un CPULa mémoireRegistres vs MémoireFonctionnement des instructionsLe modèle à deux fichiersL'architecture x86-64Entraînez-vous par vous-même : Playground Assembly