Article de reference

fichier objet

Un fichier objet est un fichier contenant du code machine (ou bytecode) , ainsi que d'autres données et métadonnées , généré par un compilateur ou un assembleur à partir du code...

Un fichier objet est un fichier contenant du code machine (ou bytecode) , ainsi que d'autres données et métadonnées , généré par un compilateur ou un assembleur à partir du code source lors du processus de compilation ou d'assemblage. Le code machine généré est appelé code objet .

Le code objet est généralement relogeable et n'est généralement pas directement exécutable . Il existe différents formats de fichiers objets, et un même code machine peut être conditionné dans différents formats de fichiers objets. Un fichier objet peut également fonctionner comme une bibliothèque partagée .

Les métadonnées que peuvent contenir les fichiers objets servent à l'édition de liens et au débogage ; elles incluent des informations permettant de résoudre les références croisées symboliques entre différents modules, des informations de relocalisation , des informations de déroulement de la pile , des commentaires , les symboles du programme et des informations de débogage ou de profilage . D'autres métadonnées peuvent inclure la date et l'heure de compilation, le nom et la version du compilateur, ainsi que d'autres informations d'identification.

Le terme « programme objet » remonte au moins aux années 1950 :

En programmation automatique, le terme désigne le programme en langage machine produit par la machine en traduisant un programme source écrit par le programmeur dans un langage similaire à la notation algébrique.

Un éditeur de liens est utilisé pour combiner le code objet en un seul programme exécutable ou une seule bibliothèque, en intégrant les bibliothèques système précompilées selon les besoins.

Formats de fichiers objets

Il existe de nombreux formats de fichiers objets différents ; à l'origine, chaque type d'ordinateur et de logiciel associé possédait son propre format unique, tel que le format de fichier objet OS/360 , mais avec l'avènement d' Unix et d'autres systèmes d'exploitation portables , certains formats, tels que COFF , ELF et Mach-O , ont été définis et utilisés sur différents types de systèmes.

Certains systèmes font la distinction entre les formats directement exécutables et ceux nécessitant un traitement par l' éditeur de liens . Par exemple, OS/360 et ses successeurs appellent le premier format « module de chargement » et le second « module objet » . Dans ce cas, les fichiers ont des formats totalement différents. DOS et Windows utilisent également des formats de fichiers différents pour les exécutables et les objets : Portable Executable pour les exécutables et COFF pour les objets sous Windows 32 bits et 64 bits.

Les systèmes Unix et apparentés utilisent le même format pour les fichiers exécutables et objets, à commencer par le format original a.out . Certains formats peuvent contenir du code machine pour différents processeurs, le système d'exploitation sélectionnant le bon lors du chargement du programme.

La conception et/ou le choix d'un format de fichier objet constituent un élément clé de la conception globale d'un système. Ils influent sur les performances de l'éditeur de liens et, par conséquent, sur le temps de traitement des programmeurs lors du développement d'un programme. Si le format est utilisé pour des exécutables, sa conception influe également sur le temps de démarrage des programmes et, de ce fait, sur la réactivité pour les utilisateurs.

La bibliothèque BFD (Binary File Descriptor ) du projet GNU fournit une API commune pour la manipulation de fichiers objets dans divers formats.

Fichiers absolus

De nombreux ordinateurs anciens, ou petits micro-ordinateurs , ne prennent en charge que le format objet absolu. Les programmes ne sont pas relogeables ; ils doivent être assemblés ou compilés pour s’exécuter à des adresses spécifiques et prédéfinies. Le fichier ne contient aucune information de relocalisation ou de liaison. Ces fichiers peuvent être chargés en mémoire vive (lecture/écriture) ou stockés en mémoire morte (lecture seule ). Par exemple, le moniteur Motorola 6800 MIKBUG intègre une routine permettant de lire un fichier objet absolu ( format SREC ) sur bande perforée . Les fichiers COM DOS constituent un exemple plus récent de fichiers objets absolus.

Segmentation

Most object file formats are structured as separate sections of data, each section containing a certain type of data. These sections are known as "segments" due to the term "memory segment", which was previously a common form of memory management. When a program is loaded into memory by a loader, the loader allocates various regions of memory to the program. Some of these regions correspond to sections of the object file, and thus are usually known by the same names. Others, such as the stack, only exist at run time. In some cases, relocation is done by the loader (or linker) to specify the actual memory addresses. However, for many programs or architectures, relocation is not necessary, due to being handled by the memory management unit or by position-independent code. On some systems the segments of the object file can then be copied (paged) into memory and executed, without needing further processing. On these systems, this may be done lazily, that is, only when the segments are referenced during execution, for example via a memory-mapped file backed by the object file.

Types of data supported by typical object file formats:

Segments in different object files may be combined by the linker according to rules specified when the segments are defined. Conventions exist for segments shared between object files; for instance, in DOS there are different memory models that specify the names of special segments and whether or not they may be combined.

The debugging data format of debugging information may either be an integral part of the object file format, as in COFF, or a semi-independent format which may be used with several object formats, such as stabs or DWARF.

Plus d articles de Worldlex Wiki

Revenez a l index pour explorer davantage de pages sur l histoire, la science, la culture, la geographie et la societe en francais.

Explorer l index