COFF
Common Object File Format ( COFF ) je formát pro spustitelné soubory, soubory objektového kódu a dynamické knihovny. Formát se objevil v Unix System V a nahradil dřívější a.out . Sloužil jako základ pro rozšířené specifikace jako XCOFF a ECOFF a byl následně nahrazen formátem ELF . Nadále se používá na některých operačních systémech podobných UNIX , na Microsoft Windows a dalších systémech.
Formát souboru
Soubor COFF obsahuje záhlaví souboru, volitelné záhlaví, tabulku oddílů a jeden nebo více oddílů kódu a dat.
Záhlaví souboru COFF
Zaujatost |
Délka |
Pole |
Popis
|
0 |
2 |
f_magic |
Identifikátor typu počítače, na kterém lze soubor spustit
|
2 |
2 |
f_nscns |
Počet sekcí
|
čtyři |
čtyři |
f_timdat |
Snížit 32 bitů počtu sekund od 1. ledna 1970 0:00, kdy byl soubor vytvořen
|
osm |
čtyři |
f_symptr |
Umístění v souboru tabulky symbolů (používá se pro ladění)
|
12 |
čtyři |
f_nsyms |
Počet prvků v tabulce symbolů
|
16 |
2 |
f_opthdr |
Dodatečná velikost záhlaví pro objektové soubory je nulová
|
osmnáct |
2 |
f_flags |
Příznaky určující atributy souboru
|
Volitelná hlavička souboru obsahuje informace potřebné pro zavaděč. Velikost záhlaví se může lišit v závislosti na systému a verzi.
Další záhlaví (pro MIPS)
Zaujatost |
Délka |
Pole |
Popis
|
0 |
2 |
kouzlo |
Typ souboru
|
2 |
2 |
vstamp |
Verze
|
čtyři |
čtyři |
velikost ts |
Celková velikost všech sekcí obsahujících spustitelný kód
|
osm |
čtyři |
dsize |
Celková velikost všech sekcí obsahujících inicializovaná data
|
12 |
čtyři |
bsize |
Celková velikost všech sekcí obsahujících neinicializovaná data
|
16 |
čtyři |
vstup |
Adresa vstupního bodu programu (0 – pokud se nepoužívá)
|
dvacet |
čtyři |
text_start |
Adresa pro stažení kódu
|
24 |
čtyři |
data_start |
Inicializovaná adresa pro načtení dat
|
28 |
čtyři |
bss_start |
Adresa umístění neinicializovaných dat
|
32 |
čtyři |
gprmask |
|
36 |
čtyři |
cprmas |
|
40 |
čtyři |
gp_value |
|
Tabulka sekcí se nachází přímo za doplňkovým nadpisem. Každý řádek v tabulce je nadpisem příslušné sekce.
Řádek tabulky oddílů
Zaujatost |
Délka |
Pole |
Popis
|
0 |
osm |
s_name |
Název sekce
|
osm |
čtyři |
s_paddr |
Fyzická adresa
|
12 |
čtyři |
s_vaddr |
Virtuální adresa
|
16 |
čtyři |
s_velikost |
Velikost sekce
|
dvacet |
čtyři |
s_scnpt |
Pozice sekce v souboru
|
28 |
čtyři |
s_relptr |
Pozice v souboru tabulky nastavení adresy sekce
|
32 |
čtyři |
s_lnnoptr |
|
36 |
2 |
s_nreloc |
Počet položek v tabulce nastavení adresy
|
38 |
2 |
s_nlnno |
|
40 |
čtyři |
s_flags |
Vlajky
|
Odkazy