Skip to content
NouveauLes 84 chapitres sont en ligne, en français et en anglais

Comment fonctionne vraiment un ordinateur, couche par couche.

Partez des applications que vous utilisez et des algorithmes qui les font tourner, puis suivez une seule ligne de C à travers l’assembleur, le code machine, les micro-opérations et les bus jusqu’aux portes logiques et transistors qui l’exécutent, et parcourez chacune en direct.

niveaux d’abstraction
10
niveaux d’abstraction
chapitres prévus
84
chapitres prévus
exemples exécutables
24
exemples exécutables
installation ou inscription
0
installation ou inscription

Le simulateur

Arrêtez d’imaginer ce que fait le CPU. Regardez-le.

Un compilateur, un émulateur et un débogueur qui s’expliquent eux-mêmes, entièrement dans votre navigateur.

int c = a + b;→mov eax, DWORD PTR [rbp-4]mov ecx, DWORD PTR [rbp-8]add eax, ecxmov DWORD PTR [rbp-12], eax
if (c > 7)→cmp DWORD PTR [rbp-12], 7jle .L1

Du C à l’assembleur, dans le navigateur

Un vrai compilateur : types, pointeurs, structures et chaînes. Chaque ligne d’assembleur renvoie au C qui l’a produite.

OF0
SF1
ZF0
AF1
PF0
CF1

cmp eax, 5 · 3 − 5 = −2 → jl taken

Chaque drapeau, chaque bit

Le registre RFLAGS complet, ce que chaque instruction a écrit ou modifié, et quel saut conditionnel sera pris, et pourquoi.

▸ factorial(n=3) · ← factorial(n=4) ← main()
[rbp-4]argn0x00000003
[rbp]fpsaved rbp (factorial)0x7fffff98
[rbp+8]retreturn → factorial+140x00401011

La pile, annotée

Cadres, variables locales, arguments, pointeurs de cadre sauvegardés et adresses de retour, nommés d’après votre C. Regardez un débordement de tampon l’écraser.

CPUMAR · MDR
Address0x7fffffc8
Data0x7fffffe0 →
ControlMEMW
RAMstack

À l’intérieur du CPU

Fetch, decode, calcul d’adresse, lectures et écritures sur le bus, ALU, write-back : chaque micro-opération animée sur le bus système.

Dix niveaux

D’un clic à l’électron, dix niveaux de profondeur

Chaque niveau est implémenté par celui du dessous. Choisissez un niveau pour zoomer.

Explorer les dix niveaux
  1. L0Applications et utilisateurCe que vous voyez et faites : cliquer, taper, charger une page, et ce que chacun de ces gestes déclenche vraiment.
  2. L1Problèmes et algorithmesAvant tout langage : ce qu’est un calcul, comment résoudre un problème pas à pas, et comment en mesurer le coût.
  3. L2Langages de programmationCe que vous écrivez : variables, fonctions, pointeurs, et ce qu’un compilateur en fait.
  4. L3Langage d’assemblageUne ligne par instruction : registres, drapeaux, sauts : la vue des débogueurs et désassembleurs.
  5. L4Système d’exploitationLa couche qui fait d’un CPU plusieurs processus : mémoire virtuelle, appels système, fichiers.
  6. L5Architecture du jeu d’instructionsLe contrat entre logiciel et silicium : formats, encodages, modes d’adressage.
  7. L6MicroarchitectureComment une instruction devient fetch, decode, execute : chemin de données, bus, caches, pipelines.
  8. L7Logique numériquePortes, additionneurs, ALU, bascules et cellules mémoire, là où 0 et 1 deviennent calcul.
  9. L8Composants et pucesLe transistor comme interrupteur, les portes CMOS, la fabrication des puces, et les périphériques de stockage et d’E/S qu’on en tire.
  10. L9Physique du calculLe vrai fond : électrons, semi-conducteurs et effet de champ : comment un bit est physiquement stocké et déplacé, et les limites qu’impose la physique.

Fondamentaux

Les systèmes de numération sur lesquels reposent tous les niveaux.

Niveaux d’abstraction et brève histoire des ordinateursBinaire et hexadécimalComplément à deux et entiers signésVirgule flottante (IEEE 754)Caractères, ASCII et UnicodeBoutisme (endianness)Parité, codes de Hamming et correction d’erreursUnités : kilo, kibi et compagnie

Commencez en haut. Descendez aussi loin que vous voulez.

Sans installation ni compte. Chaque chapitre a des démos en direct à manipuler.

Commencer par les niveaux