Objektový kód

Objektový kód, objektový soubor (anglicky object code, object file) 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. 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 .data 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 .text, 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
    • .EXE
    • 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
  • OpenVMS
    • ELF
    • DWARF – Formát pro debugger a trasování programu
  • ostatní
    • Class (file format)
    • IBM 360 object format
    • NLM
    • OMF (VME)
    • SOM (HP)
    • XBEXbox executable
    • APP – Symbian OS executable file format
    • RDOFF
    • HunkAmigaOS
    • Intel HEX

Reference

Související články

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.