Objektový kód

Technology
12 hours ago
8
4
2
Avatar
Author
Albert Flores

Objektový kód, objektový soubor je v informatice označení pro soubory, které obsahují strojový kód spolu s dalšími informacemi (tzv. metadata). Objektový soubor je rozdělen do několika sekcí. Každá sekce obsahuje data použitá v kódu a metadata, která přidávají informace o datech. Konkrétně to jsou relokační tabulky, velikost jednotlivých sekcí, jejich pozice v objektovém souboru, umístění sekce v paměti. Obsahem dat pak může být samotný kód programu, komentáře, ladící a profilovací informace, konstanty, pozice zásobníku, halda a další.

Objektový soubor může být vytvořen pomocí překladače (nebo linkerem z jiných objektových souborů). Může z něho být vytvořena výsledný spustitelný soubor, knihovna nebo jiná forma spustitelného souboru.

Formáty objektového souboru

Existuje mnoho formátů objektových souborů. Zprvu byl pro každou architekturu jiný typ. +more v unixových systémech v současné době existují formáty COFF a ELF. Za primitivní objektový kód lze považovat i soubor s příponou . COM, který je jen pouhou posloupností bajtů strojového kódu, která je načtena na pevnou adresu v operační paměti (do jednoho segmentu). Další formáty objektového kódu jsou EXE soubory.

Pro prostředí GNU existuje skupina programů GNU binutils, které s objektovými soubory pracují.

Ukázka výpisu sekcí objektového souboru

Zdrojový soubor:

int main(void) { int j=0xdeadbeef; return j; }

Zkompilován pomocí:

gcc -ffreestanding -nostdlib -Wall -c test.c -o test.o

Má následující sekce:

objdump test.o -h

a.out: file format elf32-i386

Sections: Idx Name Size VMA LMA File off Algn 0 . text 00000024 00000000 00000000 00000034 2**2 CONTENTS, ALLOC, LOAD, READONLY, CODE 1 . +moredata 00000000 00000000 00000000 00000058 2**2 CONTENTS, ALLOC, LOAD, DATA 2 . bss 00000000 00000000 00000000 00000058 2**2 ALLOC 3 . comment 00000012 00000000 00000000 00000058 2**0 CONTENTS, READONLY 4 . note. GNU-stack 00000000 00000000 00000000 0000006a 2**0 CONTENTS, READONLY.

Je zde sekce . +moretext, tedy kód. Sekce . data, kde jsou globální proměnné a pole (zde žádné není). V sekci . bss jsou neinicializovaná data. Ostatní sekce jsou pak pomocné informace dodány kompilátorem.

Souhrn některých formátů objektového kódu

DOS ** . COM ** . +moreEXE ** Relocatable Object Module Format (dříve známý jako "OBJ file" nebo "OMF", také používaný některými nástroji pro Microsoft Windows).

* Embedded ** IEEE-695 ** S-records

* Macintosh ** PEF/CFM ** Mach-O (NEXTSTEP, Mac OS X)

* OpenVMS ** ELF ** DWARF - Formát pro debugger a trasování programu

* unixové systémy ** a. +moreout ** COFF (System V) *** ECOFF (Mips) *** XCOFF (AIX) ** ELF (SVR4, používaný v moderních systémech) ** Mach-O (NeXT, Mac OS X).

* Microsoft Windows ** 16bitový New Executable (NE) ** Portable Executable (PE)

* ostatní ** Class (file format) ** IBM 360 object format ** NLM ** OMF (VME) ** SOM (HP) ** XBE - Xbox executable ** APP - Symbian OS executable file format ** RDOFF ** Hunk - AmigaOS ** Intel HEX

Reference

[url=http://www.linuxjournal.com/article/1059]The ELF Object File Format: Introduction[/url] - Popis jednotlivých sekcíve formátu ELF (stránka v angličtině)

5 min read
Share this post:
Like it 8

Leave a Comment

Please, enter your name.
Please, provide a valid email address.
Please, enter your comment.
Enjoy this post? Join Cesko.wiki
Don’t forget to share it
Top