The English encyclopedia Allmultimedia.org will be launched in two phases.
The final launch of the Allmultimedia.org will take place on February 24, 2026
(shortly after the 2026 Winter Olympics).

Objektový kód

Z Multimediaexpo.cz

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.

Obsah

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

  • OpenVMS
    • ELF
    • DWARF – Formát pro debugger a trasování programu

Související články

Reference