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