Maybaygiare.org

Blog Network

Executable

Voir aussi: Fichier objet

Les fichiers exécutables peuvent être codés manuellement en langage machine, bien qu’il soit beaucoup plus pratique de développer un logiciel en tant que code source dans un langage de haut niveau qui peut être facilement compris par les humains. Dans certains cas, le code source peut être spécifié en langage assembleur à la place, ce qui reste lisible par l’homme tout en étant étroitement associé aux instructions de code machine.

Le langage de haut niveau est compilé soit dans un fichier de code machine exécutable, soit dans un fichier objet de code machine non exécutable; le processus équivalent sur le code source du langage d’assemblage s’appelle assembly. Plusieurs fichiers objets sont liés pour créer l’exécutable. Les fichiers objets – exécutables ou non – sont généralement stockés dans un format conteneur, tel que le Format Exécutable et Liable (ELF) ou l’Exécutable Portable (PE) spécifique au Système d’exploitation. Cela donne une structure au code machine généré, par exemple en le divisant en sections telles que.texte (code exécutable), .données (variables globales et statiques initialisées), et .rodata (données en lecture seule, telles que les constantes et les chaînes).

Les fichiers exécutables incluent généralement un système d’exécution, qui implémente des fonctionnalités de langage d’exécution (telles que la planification des tâches, la gestion des exceptions, l’appel de constructeurs et de destructeurs statiques, etc.) et les interactions avec le système d’exploitation, notamment le passage d’arguments, l’environnement et le retour d’un état de sortie, ainsi que d’autres fonctionnalités de démarrage et d’arrêt telles que la libération de ressources telles que des poignées de fichiers. Pour C, cela se fait en liant l’objet crt0, qui contient le point d’entrée réel et effectue la configuration et l’arrêt en appelant la bibliothèque d’exécution.

Les fichiers exécutables contiennent donc normalement du code machine supplémentaire significatif au-delà de celui généré directement à partir du code source spécifique. Dans certains cas, il est souhaitable de l’omettre, par exemple pour le développement de systèmes embarqués, ou simplement pour comprendre le fonctionnement de la compilation, de la liaison et du chargement. En C, cela peut être fait en omettant le runtime habituel et en spécifiant explicitement un script d’éditeur de liens, qui génère le point d’entrée et gère le démarrage et l’arrêt, comme appeler main pour démarrer et renvoyer l’état de sortie au noyau à la fin.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.