Plan du cours
1. Notions préliminaires : structure d’un compilateur (front-end, back-end, coeur),
description de la machine cible assembleur (RISC 2000)
2. Mise à niveau Ocaml faite exclusivement en TP (langage disponible librement
par ftp depuis l’Inria ftp.inria.fr)
3. Analyse lexicale et syntaxique :
bref rappel sur Lex, Ocamllex, Yacc, Ocamlyacc
4. Arbre de syntaxe abstraite :
structure et représentation
5. Analyse statique : typage (rappels)
6. Structure de la machine d’éxécution pour un langage a blocs
7. Pile des blocs d’activation pour fonctions/variables locales
8. Interface entre front-end et coeur: le code intermediaire (génération, optimisa-
tion, linéarisation)
9. Génération du code assembleur
10. Allocation des régistres
11. Extensions:
Itypage des types recursifs
Iallocation de registres par coloriage de graphes
Icompilation des langages à objets
Icompilation des langages fonctionnels
Imachines virtuelles
Ialgèbre des T pour la génération et le bootstrap des compilateurs
Bibliographie
ICompilers: Principles, Techniques and Tools.
Alfred V. AHO, Ravi SETHI, Jeffrey D. ULLMAN,Addison-Wesley. Version
française en bibliothèque.
IModern Compiler Implementation in ML.
Andrew APPEL,CAMBRIDGE UNIVERSITY PRESS
http://www.cs.princeton.edu/~appel/modern/ml/
Une vingtaine de copies à la bibliothèque.
2