Apprivoiser l’Assembleur : Un défi personnel

Allen Jolan
LinkedIn

L’assembleur est souvent perçu comme un langage intimidant, presque mystique. Pourtant, c’est celui qui parle le plus directement au processeur. Pour lever le voile sur ce fonctionnement, je me suis lancé un petit défi : réaliser une calculatrice simple en assembleur x86_64.


Pourquoi l’Assembleur ?

Cela permet de voir comment les données transitent réellement dans la machine :

  • La mémoire : Comment elle est gérée via la pile (stack).
  • Les registres : Ces petites cases ultra-rapides du processeur (RAX, RDI, RSI…).
  • Le lien avec le C : Comment un langage de “haut niveau” communique avec le matériel.

Mon approche : Un projet hybride

Pour ne pas me perdre dès le début, j’ai choisi de faire simple :

  1. Le Driver en C (main.c) : Il gère l’interface, la saisie des nombres et l’affichage des résultats. C’est la partie “facile”.
  2. Le Cœur en Assembleur (.asm) : Chaque opération mathématique (addition, soustraction, multiplication, division) est écrite en pur assembleur NASM.

Exemple : L’Addition

En assembleur x86_64, on utilise des registres pour passer les arguments. Le premier nombre arrive dans RDI et le deuxième dans RSI. Le résultat est renvoyé via RAX.

global addition

section .text

addition:
mov rax, rdi ; On met le 1er argument dans RAX
add rax, rsi ; On ajoute le 2ème argument
ret ; On renvoie le résultat

C’est simple, mais c’est là que l’on comprend que chaque instruction compte.


Ce que j’ai appris

C’est une expérience modeste, mais elle m’a donné le goût de continuer à explorer ce qui se passe “sous le capot”.


Retrouvez le code complet sur mon GitHub : simple-calculator-in-Assembly


Allen Jolan