← Retour à la page de la matière

🧠 Cours Complet — Langage Assembleur (x86-64)


📘 Section 1 — Introduction & Contexte

🔹 Qu’est-ce que le langage assembleur ?

Le langage assembleur (Assembly) est un langage de bas niveau qui permet de dialoguer directement avec le processeur.
Chaque instruction assembleur correspond à une seule instruction machine, spécifique à une architecture donnée (x86, ARM, MIPS, RISC-V, etc.).

Le code assembleur est donc proche du matériel, mais reste plus lisible que le binaire pur.


🎯 Pourquoi apprendre l’assembleur ?


⚙️ Pourquoi l’assembleur x86-64 ?

⚠️ Inconvénient : l’assembleur x86-64 est très vaste, verbeux et non portable.

🧩 Section 2 — Architecture de Von Neumann

🧠 Principe

Modèle où instructions et données partagent la même mémoire.

ÉlémentFonction
CPUExécute les instructions
RAMStocke instructions et données
BusTransport données/adresses

🔁 Cycle d’exécution

  1. Fetch → Récupère l’instruction
  2. Decode → Décode opération + opérandes
  3. Execute → Exécute via l’ALU/registres
  4. Write Back → Stocke le résultat

🏗️ Section 3 — Niveaux de Langage

NiveauExempleCaractéristiques
Haut niveauPython, C, JavaPortable, lisible
Assembleurx86-64, ARMNon portable, lisible expert
MachineBinaireNon lisible humainement

Exemple :

LangageCode
Ca = b + c;
Assembleur
mov eax, [b]
add eax, [c]
mov [a], eax
Machine10001011 00000100

💾 Section 4 — CPU, RAM et registres

🧮 Mémoire

RAM = programme + données, mais accès plus lent que registres.

⚙️ Registres

Emplacements internes rapides du CPU.

RegistreUsage
RAXAccumulateur
RBXBase
RCXCompteur
RDXDonnées / reste division
RSI/RDISource/destination
RBP/RSPGestion de pile
R8 → R15Registres additionnels
...

📚 Section 12 — Ressources


🧠 Section 13 — Astuces & bonnes pratiques