Format de module d'objet déplaçable - Relocatable Object Module Format
| Extension de nom de fichier |
.obj
|
|---|---|
| Développé par | Comité des normes d'interface d'outil |
| Type de format | Fichier objet |
Le format de module d'objet relocalisable (OMF) est un format de fichier objet utilisé principalement pour les logiciels destinés à fonctionner sur des microprocesseurs Intel 80x86 . La version 4.0 a été publiée par Intel en 1981 sous le nom de Object Module Format , et est peut-être mieux connue des utilisateurs de DOS sous le nom de fichier .OBJ . Il a depuis été normalisé par le Tool Interface Standards Committee .
Format de fichier
De nombreux formats de fichiers objets consistent en un ensemble de tables, telles que la table de relocalisation, qui sont soit stockées à des positions fixes dans le fichier, comme le format a.out , soit pointées par l'en-tête, comme le format ELF . Les "sections", le code, la zone de données, etc., sont stockés sous forme de zones contiguës d'octets dans de tels fichiers.
Cependant, le format du module d'objet relocalisable a été conçu pour nécessiter un minimum de mémoire lors de la liaison et consiste en une série d'enregistrements au format suivant :
| Taille | Contenu |
|---|---|
| 1 octet | Type d'enregistrement, par exemple les informations de réinstallation |
| 2 octets | Longueur des données ( N +1) |
| N octets | Données (varie selon le type d'enregistrement) |
| 1 octet | Somme de contrôle ou 0 |
Il existe une grande variété de types d'enregistrement en raison de la consolidation des variantes OMF de plusieurs fournisseurs et de l'ajout de fonctionnalités telles que le code 32 bits et la liaison dynamique. Voici les types d'enregistrements importants :
- COMMENTAIRE - (88h) Commentaire, qui peut également contenir des informations de contrôle.
- EXTDEF - (8Ch) Définit les références externes
- PUBDEF - (90h/91h) Identifie les symboles externes dans ce module
- SEGDEF - (98h/99h) Identifie les segments
- GRPDEF - (9Ah) Identifie des groupes de segments, par exemple MS-DOS
DGROUP - FIXUPP - (9Ch/9Dh) Dossiers de réparation ou de relocalisation
- LEDATA - (A0h/A1h) Contient le texte d'un code ou d'une section de données
- COMDEF - (B0h) Données communes non initialisées
- COMDAT - (C2h/C3h) Données communes initialisées
- MODEND - (8Ah/8Bh) Indique la fin du module
Il n'y a pas d'en-tête contenant des décalages de fichier, comme un pointeur vers une table de symboles, dans le fichier ; un éditeur de liens doit analyser complètement le fichier objet pour extraire toutes les informations.
Dans le format OMF, les données d'une section ne sont pas nécessairement stockées sous forme d'octets contigus dans le fichier, mais peuvent être représentées par plusieurs enregistrements. La spécification du format de fichier (version 1.1) indique que cela doit être fait pour les sections supérieures à 1 Kio. Les enregistrements contenant des informations de relocalisation (corrections) doivent être stockés immédiatement après les enregistrements de données de la section à laquelle ils s'appliquent, de sorte que les données de section et les informations de relocalisation sont « mélangées » dans le fichier.
Le format de fichier fournit des enregistrements spéciaux (LIDATA) qui permettent la compression de séquences de données répétitives dans un fichier objet. Il offre également la possibilité de stocker le nom du symbole du point d'entrée du fichier exécutable ultérieur dans un fichier objet.
Le format de fichier peut également être utilisé comme format de fichier de bibliothèque .
Utilisation
Le format de fichier est le format de fichier objet le plus important sous DOS, Windows 16 bits et OS/2 16 et 32 bits .
Peu de chaînes d'outils utilisent la version 32 bits du format OMF. Par exemple, la chaîne d'outils Watcom C permet de générer du code pour les cibles qui utilisent des dispositions de mémoire segmentées 32 bits ; Iron Spring PL/I peut générer du code pour les configurations de mémoire plate OS/2 32 bits.
Le compilateur Embarcadero Delphi a utilisé ce format lors de la génération de objfichiers pour C++. C'était le seul format de fichiers objet pouvant être lié à un programme ou à une unité écrit en Pascal Objet avant la version XE2 de Delphi, qui a introduit la prise en charge du format COFF , ainsi que la cible Windows 64 bits.
Voir également
Les références
Lectures complémentaires
- Levine, John R. (2000) [octobre 1999]. "Chapitre 3 : Fichiers objets" . Liens et chargeurs . La série Morgan Kaufmann en génie logiciel et programmation (1 éd.). San Francisco, États-Unis : Morgan Kaufmann . ISBN 1-55860-496-0. OCLC 42413382 . ISBN 978-1-55860-496-4 . Archivé de l'original le 2013-01-25 . Récupéré le 2020-01-12 .Code : [1] [2] Errata : [3]