COFF

COFF
Extensie .osau.obj
Tip de format executabil , obiect , bibliotecă dinamică
Dezvoltat în XCOFF, ECOFF, executabil portabil

Common Object File Format ( COFF ) este un format pentru fișiere executabile, fișiere de cod obiect și biblioteci dinamice. Formatul a apărut în Unix System V , înlocuind fostul a.out . A servit drept bază pentru specificații extinse, cum ar fi XCOFF și ECOFF și a fost ulterior înlocuit de formatul ELF . Continuă să fie utilizat pe unele sisteme de operare asemănătoare UNIX , pe Microsoft Windows și alte sisteme.

Format de fișier

Un fișier COFF include un antet de fișier, un antet opțional, un tabel de secțiuni și una sau mai multe secțiuni de cod și date.

Antetul fișierului COFF
Părtinire Lungime Camp Descriere
0 2 f_magic Identificatorul tipului de mașină pe care poate fi executat fișierul
2 2 f_nscns Numărul de secțiuni
patru patru f_timdat Scăderea cu 32 de biți a numărului de secunde de la 1 ianuarie 1970, ora 0:00 AM, când a fost creat fișierul
opt patru f_symptr Locație în fișierul tabelului de simboluri (utilizat pentru depanare)
12 patru f_nsyms Numărul de elemente din tabelul cu simboluri
16 2 f_opthdr Mărimea antetului suplimentară, pentru fișierele obiect este zero
optsprezece 2 f_steaguri Indicatori care specifică atributele fișierului

Antetul fișierului opțional conține informațiile necesare încărctorului. Dimensiunea antetului poate varia în funcție de sistem și versiune.

Antet suplimentar (pentru MIPS)
Părtinire Lungime Camp Descriere
0 2 magie Tip fișier
2 2 vstamp Versiune
patru patru tsize Dimensiunea totală a tuturor secțiunilor care conțin cod executabil
opt patru dsize Dimensiunea totală a tuturor secțiunilor care conțin date inițializate
12 patru bsize Dimensiunea totală a tuturor secțiunilor care conțin date neinițializate
16 patru intrare Adresa punctului de intrare în program (0 - dacă nu este utilizată)
douăzeci patru text_start Adresa de descărcare a codului
24 patru data_start Adresă de încărcare a datelor inițializată
28 patru bss_start Adresa locației datelor neinițializate
32 patru gprmask
36 patru cprmas
40 patru gp_value

Tabelul cu secțiuni este situat direct în spatele titlului suplimentar. Fiecare rând din tabel este titlul secțiunii corespunzătoare.

Rând tabel de secțiuni
Părtinire Lungime Camp Descriere
0 opt s_name Numele secțiunii
opt patru s_paddr Adresa fizică
12 patru s_vaddr Adresă virtuală
16 patru s_size Dimensiunea secțiunii
douăzeci patru s_scnpt Poziția secțiunii în dosar
28 patru s_relptr Poziția în fișierul tabelului de setare a adresei secțiunii
32 patru s_lnnoptr
36 2 s_nreloc Numărul de articole din tabelul de setare a adresei
38 2 s_nlnno
40 patru s_steaguri Steaguri

Link -uri