|
|
Un compilateur est un programme qui traduit le code source d'un langage, le plus souvent un langage de programmation, en un autre langage, le plus souvent du "langage machine". Le programme traduit est appelé "code objet".
| Table of contents |
|
2 Le problème de l'amorçage (bootstrap) 3 Les étapes de la compilation 4 Voir aussi |
Compilateurs particuliers
compilateur croisé
Un compilateur croisé (angl.: cross compiler) est un programme capable de traduire un code source en code objet ayant un environnement d'exécution (architecture matérielle, système d'exploitation) différent de celui où la compilation est effectuée.
byte code
Certains compilateurs traduisent un langage source en langage machine "virtuel", c'est-à-dire un code qui est exécuté par une machine virtuelle : un programme émulant les principales fonctionnalités d'un ordinateur. Le portage d'un programme ne requiert ainsi que le portage de la machine virtuelle. C'est le cas du compilateur Java, qui traduit du code Java en bytecode Java (code objet). Une machine virtuelle DotNet peut exécuter du bytecode MSIL produit par les langages de Microsoft C#, Visual Basic ou autres.
Les premiers compilateurs étaient écrits directement en langage assembleur, un langage symbolique élémentaire correspondant aux instructions du processeur cible et quelques structures de contrôle légèrement plus évoluées. Ce langage symbolique doit être 'assemblé' (et non compilé) et lié pour obtenir une version exécutable. En raison de sa simplicité, un simple programme suffit à le convertir en instructions machines.
Les compilateurs actuels sont généralement écrits dans le langage qu'ils doivent compiler ; par exemple un compilateur C est écrit en C, SmallTalk en SmallTalk, Lisp en Lisp, etc... Dans la réalisation d'un compilateur, une étape décisive est franchie lorsque le compilateur pour le langage X est suffisamment complet pour se compiler lui-même : il ne dépend alors plus d'un autre langage (fut-ce de l'assembleur) pour être produit.note
Le langage servant à écrire un compilateur est appelé langage d'implémentation.Le problème de l'amorçage (bootstrap)