Langages de programmation et compilation 2015-2016
Jean-Christophe Filliâtre
Cours donné aux élèves de première année à
l'École Normale Supérieure.
- Cours le lundi de 13:15 à 15:15 en salle
W
- TDs le lundi et le vendredi, de 15h30 à 17h00 en salle INFO 4 NIR
avec Robin Morisset
- Évaluation : un examen + un projet
Cours
Les cours commencent le lundi 28 septembre 2015.
Note : Une copie des transparents sera
distribuée à chaque cours. Il est donc inutile d'imprimer les PDF
ci-dessous.
- Cours 1 (28 septembre 2015) : Mise à niveau OCaml
- Cours 2 (5 octobre 2015) : Aperçu de la compilation / Assembleur X86-64
- Cours 3 (12 octobre 2015) : Syntaxe abstraite / Sémantique / Interpréteurs
- Cours 4 (19 octobre 2015) : Typage
- pas de cours le lundi 26 octobre 2015
- Cours 5 (2 novembre 2015) : Analyse lexicale
- Cours 6 (9 novembre 2015) : Analyse syntaxique 1/2
- Cours 7 (16 novembre 2015) : Analyse syntaxique 2/2
- Cours 8 (23 novembre 2015) : mode de passage des paramètres
- Cours 9 (30 novembre 2015) : Compilation des langages fonctionnels
- Cours 10 (7 décembre 2015) : Compilation des langages objets
- Cours 11 (14 décembre 2015) : Allocation mémoire
- Cours 12 (4 janvier 2016) : Production de code efficace, partie 1
- Cours 13 (11 janvier 2016) : Production de code efficace, partie 2
TD
- TD 1 (semaine 28 septembre 2015) :
Mise à niveau OCaml
- TD 2 (semaine 5 octobre 2015) :
Assembleur X86-64
- TD 3 (semaine 12 octobre 2015) :
Interprète mini-Python
- TD 4 (semaine 19 octobre 2015) :
Algorithme W
- pas de TD la semaine du 26 octobre
- TD 5 (semaine 2 novembre 2015) :
Construction d'automates déterministes à partir d'expressions régulières
- TD 6 (semaine 9 novembre 2015) :
Analyse descendante
- TD 7 (semaine 16 novembre 2015) :
Analyse syntaxique d'un petit langage
- TD 8 (semaine 23 novembre 2015) :
Aide au projet
- TD 9 (semaine 30 novembre 2015) :
Aide au projet
- TD 10 (semaine 7 décembre 2015) :
Production de code
- TD 11 (semaine 14 décembre 2015) :
GC stop & copy
- TD 12 (semaine 4 janvier 2016) :
Coloriage de graphe
- TD 13 (semaine 11 janvier 2016) :
Aide au projet
Examen
L'examen aura lieu le mercredi 27 janvier, de 13h30 à 16h30 en salle
Henri Cartan.
Les notes de cours manuscrites ou reprographiées sont les seuls
documents autorisés.
Archives :
janvier 2009
(corrigé) /
janvier 2010
(corrigé) /
janvier 2011
(corrigé) /
janvier 2012
(corrigé) /
janvier 2013
(corrigé) /
janvier 2014
(corrigé) /
janvier 2015
(corrigé) /
janvier 2016
(corrigé)
Projet
Le projet est à rendre en deux fois : première partie pour le dimanche
6 décembre (avant 18:00), seconde partie pour le dimanche 17 janvier
(avant 18:00).
Sujet partie 1 (version 2 - 3 décembre 2015)
Sujet partie 2 (version 1 - 7 décembre
2015)
Quelques tests sont fournis
(les télécharger
: tests-2-dec.tar.gz).
Ce script shell peut être utilisé pour
automatiser les tests, avec la syntaxe ./test -n
binaire-compilo où n vaut 1 (tests parseur), 2
(tests typage) ou 3 (tests production de code).
Un module OCaml est fourni pour construire du code X86-64 :
x86_64.ml
/ x86_64.mli /
documentation /
télécharger.
Libre à vous de le compléter si besoin.
Liens / Bibliographie
Outils
- Assembleur x86-64
- Assembleur MIPS
- Menhir,
un outil d'analyse syntaxique
(manuel)
Cartes de référence
Ouvrages en rapport avec le cours
Le cours ci-dessus ne suit pas vraiment ces ouvrages.
Néanmoins, se sont de très bons ouvrages, conseillés pour aller plus loin.
Voici une correspondance approximative entre le cours et ces
ouvrages :
| Cours | Chapitres
|
2 | Assembleur | Bryant & O'Hallaron 3
|
3 | Sémantique | Pierce 3-4-5
|
4 | Typage | Pierce 8-9-10 et 22 / Appel 16
|
5 | Analyse lexicale | Appel 2
|
6-7 | Analyse syntaxique | Appel 3
|
9 | Compilation des langages fonctionnels
| Appel 15
|
10 | Compilation des langages objets
| Appel 14
|
11 | allocation mémoire
| Appel 13, Bryant & O'Hallaron 9
|
Foreign students not yet fluent in French
Remerciements : merci à Christine Paulin, François Pottier et
Xavier Leroy pour leur aide dans la préparation de ce cours