Menu
CoddyTech

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 se trouver à l’intérieur d’un ordinateur :

  • Registres : de minuscules espaces de stockage à l’intérieur du processeur
  • Mémoire (RAM) : une immense grille d’emplacements numérotés à l’extérieur du processeur

Mais pourquoi y a-t-il deux emplacements ? Pourquoi le processeur ne garde-t-il pas tout en mémoire ?

La réponse est la vitesse. Les registres sont extrêmement rapides parce qu’ils se trouvent dans le 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 :

CaractéristiqueRegistresMé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 à la coupure de l’alimentation)Oui (disparaît à la coupure de l’alimentation)

La règle la plus importante en assembleur :

Une instruction peut utiliser au maximum un opérande mémoire. Pour combiner deux valeurs qui sont toutes deux en mémoire, chargez d’abord l’une d’elles dans un registre.

Les registres sont également l’endroit où tu conserves les valeurs avec lesquelles tu travailles, car chaque accès à la mémoire est lent.

Le modèle en trois étapes que tu utiliseras constamment :

ÉtapeCe qui se passeExemple
1. LOADCopier des données de la mémoire dans un registremov rax, [count]
2. WORKEffectuer une opération avec le registreadd rax, 5
3. STORERecopier le résultat en mémoire (si nécessaire)mov [result], rax

Que se passe-t-il si tu oublies cette règle ?

Si tu essaies d'additionner deux nombres qui se trouvent tous les deux en mémoire, l'assembleur affichera une erreur. Le CPU ne peut pas le faire. Tu dois d'abord charger l'un d'eux dans un registre.

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