AP3, 13 h 45 – 17 h

Slides de la séanceLe parcours de la séance

Comment suivre la séance

Nous commençons par les repères CPU : mémoire, registres, PC, programme en mémoire, pile et cache (slides 7–11). Puis quatre étapes au même rythme : cours, atelier, reprise. Les arbres sont écrits à la main dans les notebooks ; votre parser d’AP2 n’a pas besoin d’être terminé. Les octets et les maps sont les deux formes Elixir nouvelles : une slide les rappelle avant chaque atelier.

À vous de jouer dans Livebook

1. Lire et écrire des instructions

Définissez un format binaire et distinguez opcode, opérande et adresse en octets.

Slides 12 à 19Elixir : motifs binaires <<…>>, byte_size/1 · poly, chap. 6.

Run in LivebookTélécharger le .livemd

2. Faire tourner une machine à pile

Suivez le compteur ordinal, la pile et la boucle lecture–décodage–exécution. Compilez un arbre arithmétique en postordre.

Slides 20 à 29Elixir : la pile est une liste, with · poly, chap. 3, 4 et 6.

Run in LivebookTélécharger le .livemd

3. Où ranger les variables ?

Associez les noms à des cases locales. Distinguez la table du compilateur des valeurs manipulées par la machine.

Slides 31 à 38Elixir : maps, Map.fetch/2, Map.put/3 · poly, chap. 6.

Run in LivebookTélécharger le .livemd

4. Assembler et prendre une branche

Résolvez les étiquettes en deux passes, calculez les adresses et compilez case avec deux sauts.

Slides 39 à 48Elixir : Enum.reduce/3 avec accumulateur, tuples comme étiquettes · poly, chap. 6.

Run in LivebookTélécharger le .livemd

Rendu

Cycle 1 · AP1–AP3 — dimanche 6 décembre 2026 à 23 h 59

Gardez vos étapes dans AP3/. Je préciserai en cours les notebooks à terminer, les cellules attendues et le point d’arrêt, selon notre avancement. Un seul rendu réunit AP1–AP3 ; nous en reparlerons à l’oral en AP4. Les prolongements non demandés restent facultatifs.

Comment rendre

Laboratoires et défis facultatifs

Ces exercices sont facultatifs. Gardez vos essais dans entrainement/ ; pour un bonus, joignez les notebooks choisis au rendu annoncé en cours. Vous pouvez reprendre une notion ou explorer un point plus avancé.

Pour reprendre une notion

Reprendre les fermetures d’AP2

Un laboratoire guidé, indépendant de la machine : l’environnement capturé, l’appel, puis une fonction qui fabrique une fonction. Utile avant l’étape 5.

Run in LivebookTélécharger le .livemd

Reprendre les priorités et les arbres

Un parseur limité aux expressions entières, pour reprendre les priorités et les arbres. Ce laboratoire est indépendant de l’interpréteur principal.

Run in LivebookTélécharger le .livemd

Reprendre la pile avec une calculatrice RPN

Une calculatrice postfixe et ses commandes, pour prolonger le laboratoire de pile d’AP1.

Run in LivebookTélécharger le .livemd

Pour aller plus loin

Étape 5 — Appeler une fonction

Pour qui a terminé les quatre étapes, ou pour toute la classe en « locomotive » : trois instructions, une pile de cadres d’appel et des fonctions fermées, sans capture. Le travail à rendre sera annoncé en cours ; les prolongements non demandés sont facultatifs.

Run in LivebookTélécharger le .livemd

TP ★ — Récursion et programmation dynamique

Escaliers, rendu de monnaie, mémoïsation : la récursion qui calcule vite.

Run in LivebookTélécharger le .livemd

Les défis de la séance

Des exercices plus durs, énoncés secs, zéro solution. Pour ceux qui ont fini le livebook et en veulent encore.

Run in LivebookTélécharger le .livemd

Un bout de syntaxe oublié ?

Le poly reprend le langage aux chapitres 1 à 4, avec ses exemples et leurs résultats. Pour cette séance, relisez le chapitre 6.

Retour à l'accueil