Compilation : De l'algorithmie à la porte logiqua

Catalogue des cours de Télécom SudParis

Code

IGFF CSC 4536

Niveau

M1

Graduate

Graduate

Semestre

Fall

Domaine

Informatique

Programme

Programme Ingénieur

Langue

Français/French

Crédits ECTS

4

Heures programmées

45

Coordonnateur(s)

Département

  • Informatique

Equipe pédagogique

Acquis d'apprentissage

Étudier l'enchainement menant de l''écriture d'un algorithme dans un langage de programmation à son exécution par un ordinateur ;
Comprendre les différents outils conceptuels et techniques mis en jeu dans l'écriture d'un compilateur ( ou interpreteur, ou traducteur) ;
Mettre en œuvre ces outils à travers la réalisation d'un compilateur d'un sous-ensemble de Java vers l'assembleur Mips.

Cet objectif général du cours se décline sur 3 composantes plus spécifiques :
- Étudier l'architecture des processeurs et l'écriture de code assembleur
- Introduire la théorie des Langages et Maitriser ses utilisations pratiques en informatique à travers les outils de génération de compilateur (compiler's compiler).
- Approfondir la maitrise de la programmation dans un langage évolué. D'une part, par la compréhension de la façon dont les paradigmes de programmation sont implantés pour leurs exécutions. D'une part, par la pratique dans l'écriture
(en Java) d'un compilateur

Contenu

Analyse Syntaxique
- Chaine de compilation, analyse lexicale et syntaxique, hiérarchie de Chomsky
- Expression Régulières et utilisation de Jflex
- Automate fini et Langage régulier
- Grammaire algébrique et utilisation de Cup
- Analyse syntaxique LR
Architecture de processeur
- De la porte logique au processeur
- Instructions, registres, assembleur (Mips)
- Mémoire, appel de fonction, pile, frame, syscall
Compilation et écriture d'un compilateur
- Parcours d'arbres et Pattern Visitor
- Analyse sémantique, table de symbole, contrôle de type
- Génération de code intermédiaire
- Génération de code, modèle d'appel, allocation de registre.

Les éléments suivants ne font pas partie du cours, ou uniquement de façon marginale :
- aspects théoriques de l'analyse sémantique : grammaires attribuées
- analyse sémantique dynamique et analyse de flow
- transformation d'arbres et techniques d'optimisation de code
- optimisation algorithmique et structures de données dans l'écriture d'un compilateur.
- compilation séparée et édition de lien

Prérequis

Algorithmique et programmation en Java.

Mots-clés

analyse lexicale, analyse syntaxique, analyse sémantique, génération de code, processeur, registre, pile et tas, assembleur

Formule de l'évaluation

1 TP/DM Noté à mi-parcours (40%)
1 Rendu final sur le projet fil rouge du cours (60%)

Fiche mise à jour le 31/08/2018