Áthelyezhető objektummodul formátum - Relocatable Object Module Format

Áthelyezhető objektummodul -formátum
Fájlnév kiterjesztés
.obj
Által kifejlesztett Szerszámfelület szabványok bizottsága
Formátum típusa Objektum fájl

A Átépíthető Object Module Format (OMF) egy objektum fájl formátum elsősorban szoftver célja, hogy fut az Intel 80x86 mikroprocesszorok . A 4.0 verziót 1981 -ben adta ki az Intel Object Module Format néven , és a DOS -felhasználók számára talán a legjobban .OBJ fájlként ismert . Azóta a Szerszámfelület Szabványügyi Bizottság szabványosította .

Fájlformátum

Sok objektumfájl -formátum táblázatokból áll, mint például az áthelyezési táblázat, amelyeket vagy a fájl rögzített helyein tárolnak, például az a.out formátumot, vagy a fejléc mutat rá, például az ELF formátumot. A "szakaszok", a kód, az adatterület stb. Az ilyen fájlokban bájtok szomszédos területeiként kerülnek tárolásra.

Az áthelyezhető objektummodul -formátumot azonban úgy tervezték, hogy minimális memóriát igényeljen az összekapcsolás során, és a következő formátumú rekordok sorozatából áll:

Méret Tartalom
1 bájt Rekord típusa, például áthelyezési információk
2 bájt Adathossz ( N +1)
N bájt Adatok (a rekord típusától függően változhat)
1 bájt Ellenőrző összeg vagy 0

A rekord típusok széles választéka áll rendelkezésre a több gyártó OMF-változatainak összevonása, valamint a 32 bites kód és a dinamikus összekapcsolás funkciók hozzáadása miatt. Ezek fontos rekordtípusok:

  • COMENT - (88h) Megjegyzés, amely ellenőrzési információkat is tartalmazhat.
  • EXTDEF - (8Ch) Külső hivatkozásokat határoz meg
  • PUBDEF - (90h/91h) Azonosítja a külső szimbólumokat ebben a modulban
  • SEGDEF - (98h/99h) A szegmenseket azonosítja
  • GRPDEF - (9Ah) Azonosítja a szegmenscsoportokat, például az MS -DOS -t DGROUP
  • FIXUPP - (9Ch/9Dh) Javítási vagy áthelyezési rekordok
  • LEDATA - (A0h/A1h) Kód vagy adatrész szövegét tartalmazza
  • COMDEF - (B0h) Inicializálatlan közös adatok
  • COMDAT - (C2h/C3h) Inicializált közös adatok
  • MODEND - (8Ah/8Bh) A modul végét jelzi

A fájlban nincs olyan fejléc, amely fájlkorrekciókat tartalmaz, például egy szimbólumtáblára mutató mutatót; a linkelőnek teljesen elemeznie kell az objektumfájlt az összes információ kinyeréséhez.

Az OMF formátumban az adatok egyik része nem feltétlenül tárolja a szomszédos byte a fájlban, hanem azt is képviseli több rekordot. A fájlformátum (1.1 verzió) azt mondja, hogy ez kell tenni a szakaszok nagyobb, mint 1 KiB. Az áthelyezési információkat (rögzítéseket) tartalmazó rekordokat azonnal tárolni kell azoknak a szakaszoknak az adatrekordjai után, amelyekre vonatkoznak, így a szakasz adatai és az áthelyezési információ "keveredik" a fájlban.

A fájlformátum speciális rekordokat (LIDATA) biztosít, amelyek lehetővé teszik az objektumfájlban ismétlődő adatsorok tömörítését. Lehetőséget ad arra is, hogy a későbbi futtatható fájl belépési pontjának szimbólumnevét egy objektumfájlban tárolja.

A fájlformátum könyvtári fájlformátumként is használható .

Használat

A fájlformátum a legfontosabb objektum fájlformátum DOS, 16 bites Windows , valamint 16 és 32 bites OS/2 alatt .

Kevés eszközlánc használja az OMF formátum 32 bites verzióját. Például a Watcom C eszköztár lehetővé teszi kód létrehozását 32 bites szegmentált memóriaelrendezést használó célok számára ; Az Iron Spring PL/I kódot generálhat az OS/2 32 bites lapos memória elrendezéséhez.

Az Embarcadero Delphi fordító ezt a formátumot használta obja C ++ fájlok létrehozásakor. Ez volt az egyetlen objektumfájl-formátum, amelyet a Delphi XE2 verziója előtt Object Pascal-ban írt programhoz vagy egységhez lehetett kapcsolni, amely bevezette a COFF formátum támogatását a 64 bites Windows-céllal együtt.

Lásd még

Hivatkozások

További irodalom