Compilation : Du langage de haut niveau à l’assembleur -1

Catalogue des cours de Télécom SudParis

Code

IGFF CSC 4251

Niveau

M1

Graduate

Graduate

Semestre

Fall

Domaine

Informatique

Programme

Programme Ingénieur

Langue

Français/French

Crédits ECTS

2,5

Heures programmées

48

Charge de travail

70

Coordonnateur(s)

Département

  • Informatique

Equipe pédagogique

Organisation

Cours/TD/TP/projet/examen : CSC4251+CSC4252 : 15 séances de Cours Intégrés

Acquis d'apprentissage

Objectifs :
1. Étudier l'enchaînement menant de l'écriture d'un programme dans un langage de haut niveau à son exécution.
2. Comprendre les différents outils conceptuels et techniques mis en jeu dans la réalisation d'un compilateur (ou interpréteur ou traducteur).
3. Mettre en œuvre ces outils à travers la réalisation d'un compilateur d'un sous-ensemble de JAVA vers l'assembleur MIPS.
Ces objectifs généraux du cours se déclinent sur trois directions plus spécifiques :
• étudier l'architecture des processeurs et l'écriture de code assembleur ;
• introduire la théorie des langages et maîtriser ses utilisations pratiques en informatique à travers les outils de génération de compilateur (compiler's compiler) ;
• approfondir la maîtrise de la programmation dans un langage évolué, d'une part, par la compréhension de la façon dont les patrons de conception sont mis en œuvre, et d’autre part, par la pratique dans l'écriture en JAVA d'un compilateur.

Prérequis

Algorithmique et structures de données, 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 (MIPS), expression régulière, langage algébrique, compiler-compiler (JFlex, CUP), arbre de syntaxe abstraite, table de symbole, contrôle de type, code intermédiaire, patron de conception Visiteur

Contenu

Analyse Syntaxique :
- chaîne de compilation, analyse lexicale et syntaxique, hiérarchie de Chomsky,
- expression régulières et utilisation de l’outil JFlex,
- automate fini et langage régulier,
- grammaire algébrique et utilisation de l’outil CUP,
- analyse syntaxique LR.
Architecture de processeur :
- structure d’un processeur,
- instructions, registres, assembleur (MIPS),
- mémoire, appel de fonction, pile, cadre d’appel, appel système.
Compilation et réalisation d'un compilateur :
- parcours d'arbres et patron de conception Visiteur,
- 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.

Evaluation

- 2 TP notés de 1h30 (50%)
- 1 rendu final sur le projet fil rouge (50%)
- pas de CF2

Bibliographie

Site du cours : https://www-inf.telecom-sudparis.eu/COURS/CSC4251_4252