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

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.

TD

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-compilon 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

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 :

CoursChapitres
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