Outils pour utilisateurs

Outils du site


formations:masters:ue:m1:com7

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
formations:masters:ue:m1:com7 [2023/09/06 13:19] – [Pré-requis] liens treinenformations:masters:ue:m1:com7 [2025/01/29 10:46] (Version actuelle) – ↷ Liens modifiés en raison d'un déplacement. admin
Ligne 1: Ligne 1:
 +~~NOTOC~~
  
 +====== Compilation ======
 +
 +===== Description =====
 +
 +Ce module offre une introduction à l'implémentation des langages de
 +programmation ainsi qu'à la conception et réalisation de compilateurs. Il s'agit
 +d'un sujet vaste qui touche à de multiples sous-domaines de l'informatique,
 +depuis la théorie des automates jusqu'à l'architecture des ordinateurs, en
 +passant par la programmation système ou encore la logique.
 +
 +Les concepts du cours sont illustrés de façon concrète par la réalisation guidée
 +d’un compilateur de langage fonctionnel ciblant l’architecture x86-64.
 +
 +===== Syllabus =====
 +
 +==== Sujets centraux ====
 +
 +  - Analyse lexicale et syntaxique appliquée
 +  - Syntaxe abstraite et interprètes
 +  - Typage et vérification des types
 +  - Explicitation des fermetures
 +  - Élimination du flot de contrôle et des données structurées
 +  - Linéarisation du flot de contrôle
 +  - Assembleur x86-64 et convention d'appel POSIX System-V
 +
 +==== Sujets potentiellement traités ====
 +
 +  - Allocation de registre
 +  - Analyse statique flots-de-données pour l'optimisation
 +  - Optimisation du filtrage de motifs
 +
 +===== Pré-requis =====
 +
 +  * Cours [[..:..:..:licence:2024-2025:ue:l3:pf5|Programmation fonctionnelle]] (L3)
 +    * Programmation fonctionnelle en OCaml
 +    * Manipulation des structures de données algébriques (arbres)
 +    * Utilisation du système de modules
 +
 +  * Cours [[..:..:..:licence:2024-2025:ue:l2:pp3|Conduite de projet]] (L2)
 +    * Familiarité générale avec le développement sous UNIX (Linux, macOS)
 +    * Utilisation de Git