Leçon 9 : Du code source à l'exécutable
Dans la leçon précédente, on a vu que le code de haut niveau doit finalement devenir du code machine. Mais qui fait cette traduction, et comment plusieurs fichiers qu'on a écrits deviennent-ils un seul programme exécutable ? La réponse, c'est une chaîne d'outils : un compilateur qui traduit le code
Pour que le code que tu as écrit s'exécute, il passe par quelques stations : d'abord un logiciel le traduit en code machine, puis plusieurs parties sont assemblées en un seul fichier, et enfin le fichier est chargé en mémoire et s'exécute. Chaque station est un outil séparé avec une seule tâche.
- Compilateur
- Un logiciel qui traduit le code source écrit dans un langage de haut niveau en code de plus bas niveau, généralement de l'assembleur ou du code machine.
- Assembleur (l'outil)
- Un logiciel qui traduit le code assembleur en code machine et produit un fichier objet.
- Fichier objet
- La sortie de l'assembleur pour un seul fichier source : du code machine accompagné d'une table des symboles, avant l'édition de liens.
- Éditeur de liens (linker)
- Un logiciel qui combine plusieurs fichiers objets et bibliothèques en un seul exécutable et résout les références entre fichiers.
- Chargeur (loader)
- Une partie du système d'exploitation qui copie un exécutable du disque vers la mémoire et le démarre en tant que processus.
- Exécutable
- Un fichier prêt à s'exécuter qui contient du code machine lié, le produit final de la chaîne de construction.
- Interpréteur
- Un logiciel qui exécute le code ligne par ligne à l'exécution, au lieu de le traduire à l'avance en exécutable.
- Bytecode
- Une forme intermédiaire, ni le code source ni le code machine du CPU, exécutée par un interpréteur ou une machine virtuelle.
- Édition de liens statique contre dynamique
- L'édition de liens statique intègre la bibliothèque directement dans l'exécutable ; l'édition de liens dynamique la charge séparément à l'exécution et la partage entre plusieurs programmes.
- Symbole
- Un nom de fonction ou de variable dans la table des symboles, utilisé par l'éditeur de liens pour relier un appel à sa définition.