Skip to content

Latest commit

 

History

141 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Theoretical Computer

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.

Rust Logisim

Documentation complète (mdBook)


Pourquoi ce projet ?

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.

Architecture en 7 couches

# 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.

Démarrage rapide

Assembleur

# 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.bin

Langage JUMP (Haut Niveau)

Le 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

Stack technique

  • Rust : émulation matérielle, VM, assembleur, compilateur.
  • Logisim Evolution : conception et simulation des circuits logiques.
  • mdBook : documentation technique.

À propos

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

About

Construction d'un ordinateur de A à Z : des portes logiques au compilateur (Logisim & Rust). Une approche académique et rigoureuse.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages