Un ordinateur complet construit from scratch : des portes NAND jusqu'à un langage de programmation de haut niveau, en passant par l'ALU, la mémoire, le CPU, une machine virtuelle et un assembleur.
Documentation complète (mdBook)
Plutôt que d'utiliser un ordinateur comme une boîte noire, ce projet le reconstruit couche par couche, en partant d'un unique postulat : tout est dérivable d'une porte NAND. L'objectif n'est pas la performance, mais la compréhension : chaque abstraction (arithmétique, mémoire, jeu d'instructions, compilation) est conçue, prouvée et testée avant d'être utilisée comme brique pour la couche suivante.
| # | Couche | Ce qui a été construit | Statut |
|---|---|---|---|
| 0 | Logique booléenne | NAND, NOT, AND, OR, XOR, MUX, DMUX | Terminé |
| 1 | Arithmétique (ALU) | Additionneur, unité logique, décaleur, comparateur, ALU 8 bits (16 opérations) | Terminé |
| 2 | Mémoire | Registres, RAM (256 octets), Program Counter (16 bits) | Terminé |
| 3 | CPU | ISA 8 bits maison, Control Unit, cycle Fetch/Decode/Execute | Terminé |
| 4 | Machine Virtuelle | Émulation logicielle, Memory-Mapped I/O (clavier, écran) | Terminé |
| 5 | Assembleur | Parseur mnémoniques → binaire | Terminé |
| 6 | Compilateur (JUMP) | Langage de haut niveau maison : Lexer, Parser (AST), génération de code et allocation mémoire | Terminé |
Chaque couche est développée selon une approche Double-Track : conception physique dans Logisim (source de vérité matérielle) et émulation logicielle en Rust, validée par des tests unitaires exhaustifs (tables de vérité, cas limites).
Le détail technique de chaque couche (équations, schémas, choix de conception) est documenté dans les Notes de Thèse, et le suivi chronologique dans le Journal de Bord.
# Assembler un programme (traduction en binaire)
cargo run -p assembler -- examples/helloworld.asm
# L'exécuter sur la machine virtuelle
cargo run -p vm -- examples/helloworld.binLe compilateur génère l'assembleur et invoque automatiquement l'outil d'assemblage en arrière-plan pour produire le binaire exécutable.
# Compiler un programme JUMP (génère paint.asm et paint.bin)
cargo run -p compiler -- examples/paint.jmp
# L'exécuter sur la machine virtuelle
cargo run -p vm -- examples/paint.bin
Guide détaillé : docs/src/02-quickstart.md
- Rust : émulation matérielle, VM, assembleur, compilateur.
- Logisim Evolution : conception et simulation des circuits logiques.
- mdBook : documentation technique.
Projet personnel mené en solo, avec pour objectif de démontrer une compréhension bas niveau et complète de l'informatique (électronique numérique, architecture des ordinateurs, compilation). Ce projet a été développé dans le cadre d'une recherche de stage/alternance.
Jonas Facon
Email : jonas.facon@proton.me LinkedIn : linkedin.com/in/jonas-facon Portfolio : jonas-facon.dev GitHub : @Jonas0o0