Code généré
Comme indiqué dans la page Utilisation du langage de programmation assembleur, les anciens compilateurs Free Pascal s'appuyaient sur l'assembleur GNU assembler pour créer des fichiers objets. Le compilateur n'a généré qu'un fichier de langage d'assemblage ayant ensuite été transmis à l'assembleur. Dans les deux sections suivantes, nous discutons de ce qui est généré lorsque vous compilez une unité ou un programme.
Unités
Lorsque vous compilez une unité, le compilateur Free Pascal génère 2 fichiers :
- Un fichier de description de l'unité.
- Un fichier en langage assembleur.
Le fichier de langage d'assemblage contient le code source réel des instructions de votre unité et les allocations de mémoire nécessaires pour toutes les variables que vous utilisez dans votre unité. Ce fichier est converti par l'assembleur en un fichier objet (avec l'extension .o) pouvant ensuite être lié à d'autres unités et à votre programme, pour former un exécutable.
Par défaut, le fichier d'assemblage est supprimé après avoir été compilé. Uniquement dans le cas de l'option de ligne de commande -s, le fichier d'assemblage sera laissé sur le disque, de sorte que l'assembleur pourra être appelé ultérieurement. Vous pouvez désactiver l'effacement du fichier assembleur avec le commutateur -a.
Le fichier d'unité contient toutes les informations dont le compilateur a besoin pour utiliser l'unité :
- Autres unités utilisées, à la fois dans l'interface et dans la mise en oeuvre.
- Types et variables de la section interface de l'unité.
- Déclarations de fonction de la section interface de l'unité.
- Certaines informations de débogage, lorsqu'elles sont compilées avec le débogage.
Vous pouvez examiner un fichier de description d'unité à l'aide du programme ppudump, affichant le contenu du fichier. Si vous souhaitez distribuer une unité sans code source, vous devez fournir à la fois le fichier de description de l'unité et le fichier objet.
Vous pouvez également fournir un fichier d'entête C pour accompagner le fichier objet. Dans ce cas, votre unité peut être utilisée par quelqu'un souhaitant écrire ses programmes en C. Cependant, vous devez créer vous-même ce fichier d'entête car le compilateur Free Pascal ne le fait pas pour vous.
Programmes
Lorsque vous compilez un programme, le compilateur produit à nouveau 2 fichiers :
- Un fichier en langage assembleur contenant les instructions de votre programme et les allocations de mémoire pour toutes les variables utilisées.
- Un fichier de réponse de l'éditeur de liens. Ce fichier contient une liste de fichiers objets que l'éditeur de liens doit relier entre eux.
Le fichier de réponse de lien est, par défaut, supprimé du disque. Ce n'est que lorsque vous spécifiez l'option de ligne de commande -s ou lorsque la liaison échoue que le fichier est laissé sur le disque. Il est nommé link.res.
Le fichier de langage d'assemblage est converti en un fichier objet par l'assembleur, puis lié avec le reste des unités et un entête de programme, pour former votre programme final.
Le fichier d'entête du programme est un petit programme d'assemblage fournissant le point d'entrée du programme.
C'est là que l'exécution de votre programme commence, cela dépend donc du système d'exploitation, car les systèmes d'exploitation transmettent des paramètres aux exécutables de manière très différente.
Par défaut, son nom est prt0.o, et le fichier source réside dans prt0.as ou une variante de ce nom : le fichier réellement utilisé dépend du système et des distributions LINUX, que la bibliothèque C soit utilisée ou non.
Il réside généralement là où se trouve la source d'unité centrale de votre système. Sa fonction principale est de sauvegarder l'environnement et les paramètres de la ligne de commande et de configurer la pile. Ensuite, il appelle le programme principal.