Cet article est la réédition actualisée de l’article H 3 168 intitulé Compilateurs paru en 1996, rédigé par Bernard LOHRO.
RECHERCHEZ parmi plus de 10 000 articles de référence ou pratiques et 4 000 articles d'actualité
PAR DOMAINE D'EXPERTISE
PAR SECTEUR INDUSTRIEL
PAR MOTS-CLES
NAVIGUER DANS LA
CARTOGRAPHIE INTERACTIVE
DÉCOUVREZ toute l'actualité, la veille technologique GRATUITE, les études de cas et les événements de chaque secteur de l'industrie.
Article précédent
Machine virtuelle Java (JVM)Article de référence | Réf : H3168 v2
Auteur(s) : Henri-Pierre Charles, Christian Fabre
Date de publication : 10 août 2017
Article suivant
Plate-forme .NETCet article fait partie de l’offre
Technologies logicielles Architectures des systèmes (223 articles en ce moment)
Cette offre vous donne accès à :
Une base complète et actualisée d'articles validés par des comités scientifiques
Un service Questions aux experts et des outils pratiques
Des Quiz interactifs pour valider la compréhension et ancrer les connaissances
Présentation
Lire l'article
Bibliographie & annexes
Inclus dans l'offre
Cet article est la réédition actualisée de l’article H 3 168 intitulé Compilateurs paru en 1996, rédigé par Bernard LOHRO.
Un compilateur est un logiciel permettant de transformer un programme source (écrit dans un langage de programmation) dans un autre langage de programmation cible, le plus souvent dans le langage d’un processeur permettant d’exécuter le dit programme. Nous verrons dans cet article les grands principes d’un compilateur, les technologies utilisées ainsi que d’autres usages de la compilation.
A compiler is a software program that transforms a source program (written in a programming language) into another target programming language, most often the processor programming language that permits its execution. This article shows compiler principles, the technologies used and other applications of compilation technologies.
Henri-Pierre Charles : Directeur de recherche, CEA-Grenoble
Christian Fabre : Ingénieur Chercheur Senior, CEA-Grenoble
L’architecture des ordinateurs et les applications informatiques ont toujours été en grande évolution. La compilation étant à la frontière de ces deux mondes en pleine évolution, il est naturel qu’elle ait évolué de concert.
Schématiquement on pourrait découper l’histoire de la compilation en quatre grandes périodes :
1950-1970 : Durant cette période, les principales notions d’architecture matérielle étaient en place, mais il était difficile de programmer les ordinateurs qui étaient de volumineuses machines.
Les expressions rationnelles (1956) qui utilisent la théorie des automates finis et les analyseurs syntaxiques (1965) ont permis la création d’outils pour créer des langages de programmation et leur compilation. COBOL et FORTRAN (1957) ont été les premiers langages informatiques compilés.
On peut dire que cette période correspond à la création des fondements théoriques et pratique de la compilation
1970-1990 : C’est durant cette période que l’électronique grand public a été popularisée. Le processeur Intel 4004 (1971) est le premier processeur grand public, le processeur Intel 386 a été la base de la popularité des PC (Personnal Computer). Le processeur MIPS a été créé (1984), il a introduit la notion d’architecture RISC. C’est également durant cette période que Gordon Moore a réévalué sa célèbre loi indiquant « que le nombre de transistors des microprocesseurs sur une puce de silicium double tous les deux ans »
C’est pendant cette période qu’ont été créés les langages C (1972) et C++ (1983) et le premier compilateur open source GCC 1.0. Ce compilateur a eu un succès énorme et a reçu l’adhésion de beaucoup de constructeurs informatiques.
Les objectifs de la compilation d’un programme étaient alors : « de fournir un programme binaire sémantiquement équivalent au programme source ». Les optimisations étaient encore peu développées.
1990-2000 : Cette période fut très riche par la création de nouveaux concepts architecturaux : pipelines, processeurs superscalaires, mémoire caches, machine parallèles.
C’est durant cette période qu’a été créé le langage Java (1995) et qui a largement diffusé la compilation au vol (1999).
Les objectifs de la compilation d’un programme sont devenus : « de fournir un programme binaire sémantiquement équivalent qui utilise au mieux les concepts architecturaux ». Les phases d’optimisation sont devenues de plus en plus complexes. Les premiers outils pour la programmation parallèles comme MPI pour le passage de message entre processeurs (1991) ou OpenMP pour la parallélisation automatique (1997) ont été créés.
2000-2017 : Cette dernière période a vu exploser la complexité des architectures : processeurs multicœurs, co-processeurs graphiques (GPU). Les langages CUDA (2007) et OpenCL (2009) sont apparus à cette période.
Le compilateur open source LLVM est apparu en 2003. Créé comme un projet de recherche, il a ensuite reçu le support des entreprise Apple et Google qui l’ont aidé à évoluer.
Les objectifs de la compilation ont encore changé pour arriver : à fournir plusieurs programmes binaires optimisés pour exploiter les différents cœurs de l’ordinateur (hétérogènes ou non).
parallélisme d'instructions | processeur | langage de programmation | compilateur | architecture des ordinateurs | allocation de ressources | analyse lexicale | analyse syntaxique | optimisation de programme
instruction level parallelism | processor | programming language | compiler | computer architecture | resource allocation | lexical analysis | syntactic analysis | program optimization
Accueil > Ressources documentaires > Technologies de l'information > Technologies logicielles Architectures des systèmes > Programmation > Compilateur
Vous êtes abonné à cette offre ?
Connectez-vous !
Vous souhaitez découvrir cette offre ?
Cet article est inclus dans l'offre :
TECHNOLOGIES LOGICIELLES ARCHITECTURES DES SYSTÈMES
(1) - FRIGO (M.) - A fast Fourier transform compiler. - ACM SIGPLAN Notices, 39(4):642–655 (2004).
(2) - PUSCHEL (M.), MOURA (J.MF.), JOHNSON (J.R.), PADUA (D.), VELOSO (M.M.), SINGER (B.W.), XIONG (J.), FRANCHETTI (F.), GACIC (A.), VORONENKO (Y.) and others - SPIRAL : Code generation for DSP transforms. - Proceedings of the IEEE, 93(2):232–275 (2005).
(3) - ISO - The ANSI C standard (C99). - Technical Report WG14 N1124, ISO/IEC (1999).
(4) - ISO - Microprocessor Systems – Floating-Point arithmetic. - Technical Report ISO/IEC/IEEE 60559:2011, ISO/IEC (2011).
(5) - American National Standards Institute, 1430 Broadway, New York, NY 10018, USA - Military Standard Ada Programming Language, - February 1983. Also MIL-STD-1815A.
(6) - Bjarne Stroustrup - The...
ARM
Open MP
MPI
Projet PIPS
FRAMA – C
GCC
LLVM
OpenCL
https://www.khronos.org/opencl
Open ACC
HAUT DE PAGE
Vous êtes abonné à cette offre ?
Connectez-vous !
Vous souhaitez découvrir cette offre ?
Cet article est inclus dans l'offre :
TECHNOLOGIES LOGICIELLES ARCHITECTURES DES SYSTÈMES
DÉTAIL DE L'ABONNEMENT :
TOUS LES ARTICLES DE VOTRE RESSOURCE DOCUMENTAIRE
Accès aux :
Articles et leurs mises à jour
Nouveautés
Archives
Articles interactifs
Formats :
HTML illimité
Versions PDF
Site responsive (mobile)
Info parution :
Toutes les nouveautés de vos ressources documentaires par email
DES ARTICLES INTERACTIFS
Articles enrichis de quiz :
Expérience de lecture améliorée
Quiz attractifs, stimulants et variés
Compréhension et ancrage mémoriel assurés
DES SERVICES ET OUTILS PRATIQUES
Votre site est 100% responsive,
compatible PC, mobiles et tablettes.
FORMULES
Formule monoposte | Autres formules | |
---|---|---|
Ressources documentaires | ||
Consultation HTML des articles | Illimitée | Illimitée |
Quiz d'entraînement | Illimités | Illimités |
Téléchargement des versions PDF | 5 / jour | Selon devis |
Accès aux archives | Oui | Oui |
Info parution | Oui | Oui |
Services inclus | ||
Questions aux experts (1) | 4 / an | Jusqu'à 12 par an |
Articles Découverte | 5 / an | Jusqu'à 7 par an |
Dictionnaire technique multilingue | Oui | Oui |
(1) Non disponible pour les lycées, les établissements d’enseignement supérieur et autres organismes de formation. |
||
Formule 12 mois 2 165 € HT |
Autres formules |
INTRODUCTION
2 - PHASES DE COMPILATION ET TYPOLOGIES D’UTILISATION
4 - DESCRIPTION D’ARCHITECTURE
5 - FONCTIONNEMENT DU COMPILATEUR
6 - TECHNOLOGIES POUR LE COMPILATEUR
Information
Quiz d'entraînement bientôt disponible
TECHNIQUES DE L'INGENIEUR
L'EXPERTISE TECHNIQUE ET SCIENTIFIQUE
DE RÉFÉRENCE
Avec Techniques de l'Ingénieur, retrouvez tous les articles scientifiques et techniques : base de données, veille technologique, documentation et expertise technique
SOLUTION EN LIGNE
Découvrez KréaCCTP, le 1er logiciel de rédaction de CCTP en ligne. Intuitif, il s’appuie sur une bibliothèque de descriptifs actuelle et fiable.
Automatique - Robotique | Biomédical - Pharma | Construction et travaux publics | Électronique - Photonique | Énergies | Environnement - Sécurité | Génie industriel | Ingénierie des transports | Innovation | Matériaux | Mécanique | Mesures - Analyses | Procédés chimie - bio - agro | Sciences fondamentales | Technologies de l'information
ACCUEIL | A PROPOS | ANNUAIRE AUTEURS | EXPERTS SCIENTIFIQUES | PUBLICITÉ | PLAN DU SITE | MENTIONS LÉGALES | RGPD | COOKIES | AIDE & FAQ | CONTACT
PAIEMENT
SÉCURISÉ
OUVERTURE RAPIDE
DE VOS DROITS
ASSISTANCE TÉLÉPHONIQUE
+33 (0)1 53 35 20 20