Flytbart objektmodulformat - Relocatable Object Module Format

Flytbart objektmodulformat
Filnavn udvidelse
.obj
Udviklet af Værktøjsgrænseflade -standardudvalg
Type format Objektfil

Den Flytbar Object Modul Format (OMF) er et objekt-fil format anvendes primært til software er beregnet til at køre på Intel 80x86 mikroprocessorer . Version 4.0 blev udgivet af Intel i 1981 under navnet Object Module Format , og er måske bedst kendt af DOS -brugere som en .OBJ -fil . Det er siden blevet standardiseret af Tool Interface Standards Committee .

Filformat

Mange objektfilformater består af et sæt tabeller, f.eks. Flytningstabellen, som enten er gemt på faste positioner i filen, f.eks. A.out -formatet, eller som peget på af overskriften, ligesom ELF -formatet. "Sektionerne", koden, dataområdet osv. Lagres som sammenhængende byteområder i sådanne filer.

Relocatable Object Module Format var imidlertid designet til at kræve minimal hukommelse ved linkning og består af en række poster, der har følgende format:

Størrelse Indhold
1 byte Registreringstype, f.eks. Oplysninger om flytning
2 bytes Datalængde ( N +1)
N bytes Data (varierer afhængigt af posttypen)
1 byte Checksum eller 0

Der er en lang række rekordtyper på grund af konsolidering af OMF-varianter fra flere leverandører og på grund af tilføjelse af funktioner som 32-bit kode og dynamisk linkning. Disse er vigtige rekordtyper:

  • KOMENT - (88h) Kommentar, som også kan indeholde kontrolinformation.
  • EXTDEF - (8Ch) Definerer eksterne referencer
  • PUBDEF - (90h/91h) Identificerer eksterne symboler i dette modul
  • SEGDEF - (98h/99h) Identificerer segmenter
  • GRPDEF - (9Ah) Identificerer grupper af segmenter, f.eks. MS -DOS DGROUP
  • FIXUPP - (9Ch/9Dh) Fixup- eller flytningsposter
  • LEDATA - (A0h/A1h) Indeholder tekst i en kode eller datasektion
  • COMDEF - (B0h) Uinitialiserede fælles data
  • COMDAT - (C2h/C3h) Initialiserede fælles data
  • MODEND - (8Ah/8Bh) Angiver slutningen af ​​modulet

Der er ingen header, der indeholder filforskydninger, f.eks. En markør til en symboltabel, i filen; en linker skal helt analysere objektfilen for at udtrække alle oplysninger.

I OMF -formatet gemmes dataene i en sektion ikke nødvendigvis som sammenhængende bytes i filen, i stedet kan de repræsenteres af flere poster. Filformatspecifikationen (version 1.1) siger, at dette skal gøres for sektioner større end 1 KiB. Optegnelser, der indeholder flytningsoplysninger (rettelser), skal gemmes umiddelbart efter dataregistreringerne for det afsnit, de gælder for, så sektionsdataene og flytningsoplysningerne "blandes" i filen.

Filformatet indeholder særlige poster (LIDATA), der tillader komprimering af gentagne datasekvenser i en objektfil. Det giver også mulighed for at gemme symbolnavnet på indgangspunktet for den senere eksekverbare fil i en objektfil.

Filformatet kan også bruges som bibliotekfilformat .

Brug

Filformatet er det vigtigste objektfilformat under DOS, 16-bit Windows og 16-bit og 32-bit OS/2 .

Få værktøjskæder bruger 32-bit versionen af ​​OMF-formatet. For eksempel tillader Watcom C værktøjskæde at generere kode til mål, der bruger 32-bit segmenteret hukommelseslayout; Iron Spring PL/I kan generere kode til OS/2 32-bit flad hukommelseslayout.

Den Delphi compiler bruges dette format, når der genereres objfiler til C ++. Det var det eneste format på objektfiler, der kunne forbindes til et program eller en enhed, der var skrevet i Object Pascal før version XE2 af Delphi, som introducerede understøttelse af COFF- format sammen med 64-bit Windows-mål.

Se også

Referencer

Yderligere læsning