Difference between revisions of "Courses/CMP2"

From LRDE

(Created page with "{{Course |title=Construction des Compilateurs (Niveau -2) |acronym=CMP2 |teacher=Roland |period=S2, Ing1 |audience=Tronc-commun |optional course=non |module=Génie Logiciel et...")
 
 
(8 intermediate revisions by 5 users not shown)
Line 1: Line 1:
 
{{Course
 
{{Course
  +
|visible=Yes
|title=Construction des Compilateurs (Niveau -2)
+
|title=Construction des Compilateurs 2
 
|acronym=CMP2
 
|acronym=CMP2
|teacher=Roland
+
|teacher=Renault
 
|period=S2, Ing1
 
|period=S2, Ing1
 
|audience=Tronc-commun
 
|audience=Tronc-commun
  +
|exam type=Partiel, Projet
  +
|duration=12h
 
|optional course=non
 
|optional course=non
 
|module=Génie Logiciel et Programmation
 
|module=Génie Logiciel et Programmation
 
|prerequisites=CMP1
 
|prerequisites=CMP1
|objectives=Comprendre la traduction de langages, les optimisations. Mieux comprendre quand on peut avoir confiance dans du code généré/traduit automatiquement par rapport à du code écrit à la main.
+
|objectives=Comprendre la traduction de langages, les optimisations. Mieux comprendre quand on peut avoir confiance dans du code généré/traduit automatiquement par rapport à du code écrit à la main. Le compilateur est l'interface principale du programmeur vers la machine. On ne peut pas être un bon programmeur sans savoir d'un côté comment fonctionne un ordinateur (cours d'architecture, de système, d'assembleur, etc.) et de l'autre le langage de commande (cours de d'algorithmie, de C, C++, Eiffel, etc.). Sans une bonne connaissance des compilateurs ---le pont entre le programmeur et la machine-- cette connaissance est illusoire et donne lieu à des « mythes urbains de programmeurs ».Ce cours vise à démystifier la théorie de la compilation en couvrant dans le détail le fonctionnement de l'intégralité d'un compilateur. À l'issue de cet enseignement les étudiants comprennent mieux leurs outils pour devenir de meilleurs ingénieurs du logiciel.
  +
|content=* Contrôle des types* Langages intermédiaires* Passages d'arguments* Mémoire : hiérarchie des mémoires matérielles, gestion logicielle de la mémoire* Les microprocesseurs : CISC, RISC* Sélection d'instructions (génération de code)* Flot d'exécution* Vivacité des variables* Allocation de registres
 
 
|references=http://www.lrde.epita.fr/~tiger/
Le compilateur est l'interface principale du programmeur vers la machine. On ne peut pas être un bon programmeur sans savoir d'un côté comment fonctionne un ordinateur (cours d'architecture, de système, d'assembleur, etc.) et de l'autre le langage de commande (cours de d'algorithmie, de C, C++, Eiffel, etc.). Sans une bonne connaissance des compilateurs ---le pont entre le programmeur et la machine-- cette connaissance est illusoire et donne lieu à des « mythes urbains de programmeurs ».
 
 
Ce cours vise à démystifier la théorie de la compilation en couvrant dans le détail le fonctionnement de l'intégralité d'un compilateur. À l'issue de cet enseignement les étudiants comprennent mieux leurs outils pour devenir de meilleurs ingénieurs du logiciel.
 
|content=Seconde Partie : Partie Terminale de la compilation
 
 
A - Langages Intermédiaires
 
 
B - Passages d'Arguments
 
 
C - Les Microprocesseurs : CISC, RISC, VLIW
 
 
D - Sélection des Instructions
 
 
E - Flot d'exécution
 
 
F - Vivacité des variables
 
 
G - Allocation des Registres
 
|references=http://www.lrde.epita.fr/~akim/ccmp
 
 
Modern Compiler Implementation par Andrew Appel
 
Modern Compiler Implementation par Andrew Appel
 
http://tiger.lrde.epita.fr/
 
http://tiger.lrde.epita.fr/
  +
|slides=http://www.lrde.epita.fr/~tiger/lecture-notes/
  +
|logbook=Courses/CompilationLecture2005,
  +
Courses/CompilationLecture2006,
  +
Courses/ConstructionDesCompilateursLecture2007,
  +
Courses/CcmpLog2008,
  +
Courses/CcmpLog2009,
  +
Courses/CcmpLogIng2010,
  +
Courses/CcmpLogAppIng2010,
  +
Courses/CcmpTylaLogIng2011,
  +
Courses/CcmpTylaLogAppIng2011,
  +
Courses/CcmpTylaLogIng2012,
  +
Courses/CcmpTylaLogAppIng2012,
  +
Courses/CcmpLogAppIng2013,
  +
Courses/CcmpTylaLogIng2014,
  +
Courses/CcmpTylaLogAppIng2014,
  +
Courses/CcmpTylaLogIng2015,
  +
Courses/CcmpTylaLogAppIng2015,
  +
Courses/CcmpTylaLogIng2016 (Ing1 students),
  +
Courses/CcmpTylaLogAppIng2016 (AppIng1 students)
 
}}
 
}}

Latest revision as of 15:10, 3 February 2020

Titre

Construction des Compilateurs 2

Sigle

CMP2

Enseignant

Etienne Renault

Période

S2, Ing1

Public

Tronc-commun

Contrôle

Partiel, Projet

Durée

12h

Optionnel

non

Module

Génie Logiciel et Programmation

Prérequis

CMP1

Objectifs

Comprendre la traduction de langages, les optimisations. Mieux comprendre quand on peut avoir confiance dans du code généré/traduit automatiquement par rapport à du code écrit à la main. Le compilateur est l'interface principale du programmeur vers la machine. On ne peut pas être un bon programmeur sans savoir d'un côté comment fonctionne un ordinateur (cours d'architecture, de système, d'assembleur, etc.) et de l'autre le langage de commande (cours de d'algorithmie, de C, C++, Eiffel, etc.). Sans une bonne connaissance des compilateurs ---le pont entre le programmeur et la machine-- cette connaissance est illusoire et donne lieu à des « mythes urbains de programmeurs ».Ce cours vise à démystifier la théorie de la compilation en couvrant dans le détail le fonctionnement de l'intégralité d'un compilateur. À l'issue de cet enseignement les étudiants comprennent mieux leurs outils pour devenir de meilleurs ingénieurs du logiciel.

Plan
  • Contrôle des types* Langages intermédiaires* Passages d'arguments* Mémoire : hiérarchie des mémoires matérielles, gestion logicielle de la mémoire* Les microprocesseurs : CISC, RISC* Sélection d'instructions (génération de code)* Flot d'exécution* Vivacité des variables* Allocation de registres
Documentation
Support
Journaux