Format modul de obiect relocabil - Relocatable Object Module Format
| Extensie nume de fișier |
.obj
|
|---|---|
| Dezvoltat de | Comitetul pentru standarde de interfață a instrumentelor |
| Tipul formatului | Fișier obiect |
Format Modul Object Relocabile (OMF) este un fișier obiect format utilizat în principal pentru software - ul destinat să ruleze pe Intel 80x86 microprocesoare . Versiunea 4.0 a fost lansată de Intel în 1981 sub numele Object Module Format și este probabil cel mai bine cunoscută utilizatorilor DOS ca fișier .OBJ . De atunci a fost standardizat de Comitetul pentru standarde de interfață a instrumentelor .
Tipul fisierului
Multe formate de fișiere de obiecte constau dintr-un set de tabele, cum ar fi tabelul de relocare, care sunt fie stocate pe poziții fixe în fișier, cum ar fi formatul a.out , fie sunt îndreptate către antet, cum ar fi formatul ELF . „Secțiunile”, codul, zona de date etc., sunt stocate ca zone adiacente de octeți în astfel de fișiere.
Cu toate acestea, formatul modulului de obiect relocabil a fost conceput pentru a necesita memorie minimă la conectare și constă dintr-o serie de înregistrări care au următorul format:
| mărimea | Cuprins |
|---|---|
| 1 octet | Tipul de înregistrare, de exemplu informații despre relocare |
| 2 octeți | Lungimea datelor ( N +1) |
| N octeți | Date (variază în funcție de tipul de înregistrare) |
| 1 octet | Suma de control sau 0 |
Există o mare varietate de tipuri de înregistrări datorită consolidării variantelor OMF de la mai mulți furnizori și datorită adăugării unor caracteristici precum codul pe 32 de biți și conectarea dinamică. Acestea sunt tipuri importante de înregistrări:
- COMENT - (88h) Comentariu, care poate conține și informații de control.
- EXTDEF - (8Ch) Definește referințe externe
- PUBDEF - (90h / 91h) Identifică simbolurile externe din acest modul
- SEGDEF - (98h / 99h) Identifică segmente
- GRPDEF - (9Ah) Identifică grupuri de segmente, de exemplu MS-DOS
DGROUP - FIXUPP - (9Ch / 9Dh) Înregistrări de reparare sau relocare
- LEDATA - (A0h / A1h) Conține textul unui cod sau al unei secțiuni de date
- COMDEF - (B0h) Date comune neinițializate
- COMDAT - (C2h / C3h) Date comune inițializate
- MODEND - (8Ah / 8Bh) Indică sfârșitul modulului
În fișier nu există antet care conține compensări de fișiere, cum ar fi un pointer către o tabelă de simboluri; un linker trebuie să analizeze complet fișierul obiect pentru a extrage toate informațiile.
În formatul OMF, datele unei secțiuni nu sunt neapărat stocate ca octeți adiacenți în fișier, ci pot fi reprezentate de mai multe înregistrări. Specificația formatului de fișier (versiunea 1.1) spune că acest lucru trebuie făcut pentru secțiunile mai mari de 1 KiB. Înregistrările care conțin informații despre relocare (remedieri) trebuie stocate imediat după înregistrările de date ale secțiunii la care se aplică, astfel încât datele secțiunii și informațiile despre relocare sunt „amestecate” în fișier.
Formatul fișierului oferă înregistrări speciale (LIDATA) care permit compresia secvențelor de date repetate într-un fișier obiect. De asemenea, oferă posibilitatea de a stoca numele simbolului punctului de intrare al fișierului executabil ulterior într-un fișier obiect.
Formatul de fișier poate fi utilizat și ca format de fișier de bibliotecă .
Utilizare
Formatul de fișier este cel mai important format de fișier obiect în DOS, Windows pe 16 biți și OS / 2 pe 16 biți și pe 32 de biți .
Puține lanțuri de instrumente utilizează versiunea pe 32 de biți a formatului OMF. De exemplu, lanțul de instrumente Watcom C permite generarea de cod pentru ținte care utilizează aspecte de memorie segmentate pe 32 de biți ; Iron Spring PL / I poate genera cod pentru schemele de memorie plat OS / 2 pe 32 de biți.
Embarcadero Delphi Compilatorul folosit acest format atunci când generează objfișiere pentru C ++. A fost singurul format de fișiere obiect care putea fi legat de un program sau unitate scris în Object Pascal înainte de versiunea XE2 a Delphi, care a introdus suport pentru formatul COFF , împreună cu ținta Windows pe 64 de biți.
Vezi si
Referințe
Lecturi suplimentare
- Levine, John R. (2000) [octombrie 1999]. "Capitolul 3: Fișiere obiect" . Linkere și încărcătoare . Seria Morgan Kaufmann în inginerie și programare software (1 ed.). San Francisco, SUA: Morgan Kaufmann . ISBN 1-55860-496-0. OCLC 42413382 . ISBN 978-1-55860-496-4 . Arhivat din original la 25.01.2013 . Adus 12-01-2020 .Cod: [1] [2] Errata: [3]