Aller au contenu principal

#Slides - Compilation & WASM

Dix diapositives, une par étape du pipeline. Chacune reprend le même programme fil conducteur 2*(3+4)-5 et montre l'artefact exact produit par l'étape.

  1. Du texte aux tokens: l'entrée et la sortie du lexer, dix tokens dont EOF; plus long match sur <= face à <.
  2. Grammaire et parseur: la grammaire EBNF d'Expr en trois règles (expression, terme, facteur); pourquoi la précédence vit dans la grammaire, pas dans le code.
  3. AST: l'arbre ('-', ('*', 2, ('+', 3, 4)), 5) dessiné avec positions source; un message d'erreur pointé sur la colonne fautive.
  4. Sémantique: vérification des types et des variables déclarées sur le même arbre; l'erreur « variable non déclarée » levée avant toute exécution.
  5. IR à pile: la traduction push 2; push 3; push 4; add; mul; push 5; sub pas à pas, pile dessinée après chaque instruction.
  6. Constant folding: le même IR après repli des constantes, push 19; quand s'arrêter (effets de bord, débordements).
  7. Codegen WASM: le module WAT final avec (func (export "main") (result i32) i32.const 19); la chaîne compile, valide, instancie, appelle.
  8. Modèle d'exécution WASM: types i32/i64/f32/f64, pile typée, bac à sable sans disque ni réseau.
  9. Limites et sécurité: mémoire linéaire bornée, entiers qui bouclent silencieusement (i32), pas de GC ni de threads sans SharedArrayBuffer et COOP/COEP.
  10. Debug et instrumentation: source maps, console.log via imports, wasm-objdump sur le binaire produit.

Bon usage: chaque diapositive doit montrer un artefact (tokens, arbre, pile, WAT) plutôt qu'une liste de définitions; la dernière ligne de chaque slide donne la commande ou le playground qui rejoue l'étape.