Simulateur d'un CPU simplifié avec parsing et exécution d'instructions assembleur. Projet réalisé en L2 dans le cadre du cours de structures de données.
- Parsing d'assembleur : sections
.DATAet.CODE, labels, résolution de constantes - Gestion mémoire par segments : allocation dynamique avec free list et fusion de blocs
- CPU simulé : registres, pool de constantes, modes d'adressage (immédiat, registre, mémoire directe/indirecte)
- Table de hachage : implémentation from scratch avec gestion des collisions
- Exécution : cycle fetch-decode-execute avec instructions arithmétiques et de contrôle
Calcul de Fibonacci avec stockage en mémoire :
.DATA
fib_a DW 0
fib_b DW 1
counter DW 0
max_iter DW 10
.CODE
start: MOV AX, [fib_a]
MOV BX [fib_b] ; BX = 1
MOV DX [counter] ; DX = 0
loop: MOV CX, [max_iter]
CMP DX CX ; counter == max_iter ?
JZ end p; si oui, termine
MOV CX AX ; calcul de fib(n)
ADD CX BX
MOV [fib_a] BX ; stocke fib(n-1)
MOV [fib_b] CX ; stocke fib(n)
MOV AX BX ; avance les registres
MOV BX CX
ADD DX 1 ; counter++
MOV [counter] DX
JMP loop
end: HALTmake
./run fibo.asm