Maison » La structure du compilateur en trois étapes

La structure du compilateur en trois étapes

1980
Programmer working on three-stage compiler structure in a software development office.

Un compilateur moderne est généralement structuré en trois étapes : le front-end, le middle-end et le back-end. Le front-end analyse le code source, vérifie son exactitude et construit une représentation intermédiaire (RI). Le middle-end optimise cette RI. Le back-end traduit ensuite la RI optimisée en code machine cible pour une architecture CPU spécifique.

Cette conception modulaire en trois étapes assure une séparation cruciale des préoccupations. Le front-end est dépendant du langage, mais indépendant de la machine ; il comprend la syntaxe et la sémantique d'un langage spécifique comme C++ ou Rust. Sa sortie, la représentation intermédiaire (RI), est une structure de données abstraite et indépendante de la machine, comme un arbre de syntaxe abstrait (AST) ou un code à trois adresses. Cela dissocie le langage source de la machine cible.

Le middle end est largement indépendant du langage et de la machine. Il utilise l'IR et applique une série de passes d'optimisation, telles que l'élimination du code mort, le repliement des constantes et l'optimisation des boucles. Comme il fonctionne sur l'IR générique, ces optimisations complexes peuvent être écrites une seule fois et appliquées à tout langage compilable dans cet IR.

Enfin, le back-end est dépendant de la machine, mais indépendant du langage. Il utilise l'IR optimisé et effectue la sélection des instructions, l'allocation des registres et l'ordonnancement des instructions afin de générer du code machine performant pour une architecture cible spécifique, comme x86-64 ou ARM. Cette structure permet de construire des compilateurs prenant en charge M langages et N cibles en écrivant M front-ends et N back-ends, plutôt que M*N compilateurs individuels. Ce principe est illustré par les infrastructures de compilateurs modernes comme GCC et LLVM.

UNESCO Nomenclature: 1203
- Informatique

Taper

Système abstrait

Perturbation

Fondamentaux

Usage

Utilisation généralisée

Précurseurs

  • premières conceptions de compilateurs monolithiques
  • concept of abstraction in logiciel ingénierie
  • développement de langages intermédiaires dans les premiers systèmes
  • recherche sur les logiciels portables (par exemple, le système p-code)

Applications

  • compilateurs reciblables (par exemple, GCC, llvm)
  • compilation croisée pour différentes plates-formes matérielles
  • cadres d'optimisation indépendants du langage
  • développement de nouveaux langages de programmation en créant simplement un nouveau front-end
  • outils d'analyse statique fonctionnant sur une représentation intermédiaire

Brevets:

NA

Idées d'innovations potentielles

!niveaux !!! Adhésion obligatoire

Vous devez être membre de l'association pour accéder à ce contenu.

S’inscrire maintenant

Vous êtes déjà membre ? Connectez-vous ici
Related to: compiler design, front end, middle end, back end, intermediate representation, ir, optimization, code generation, modularity, GCC, llvm.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

DISPONIBLE POUR DE NOUVEAUX DÉFIS
Ingénieur mécanique, chef de projet, ingénierie des procédés ou R&D
Développement de produits efficace

Disponible pour un nouveau défi dans un court délai.
Contactez-moi sur LinkedIn
Intégration électronique métal-plastique, Conception à coût réduit, BPF, Ergonomie, Appareils et consommables de volume moyen à élevé, Production allégée, Secteurs réglementés, CE et FDA, CAO, Solidworks, Lean Sigma Black Belt, ISO 13485 médical

Nous recherchons un nouveau sponsor

 

Votre entreprise ou institution est dans le domaine de la technique, de la science ou de la recherche ?
> envoyez-nous un message <

Recevez tous les nouveaux articles
Gratuit, pas de spam, email non distribué ni revendu

ou vous pouvez obtenir votre adhésion complète - gratuitement - pour accéder à tout le contenu restreint >ici<

Contexte historique

(si la date est inconnue ou non pertinente, par exemple « mécanique des fluides », une estimation arrondie de son émergence notable est fournie)

Inventions, innovations et principes techniques connexes

Retour en haut

Vous aimerez peut-être aussi