Spustitelný soubor
Spustitelný soubor je v informatice označení pro soubor, který obsahuje instrukce, pomocí kterých počítač provede určitou činnost. Může se jednat o strojový kód nějakého procesoru nebo o zdrojový kód pro interpretovaný programovací jazyk.
Terminologie
editovatSpustitelný soubor se liší od binárního souboru, který obsahuje data, protože data je nutné nejprve nějakým programem interpretovat (dát jim význam). Z hlediska pohledu na software je však obtížné rozlišit data od programu (např. strojových instrukcí), protože spustitelný soubor obsahuje také data a je jen na procesoru, jak k nim bude přistupovat (považovat je za strojové instrukce nebo za data – například čísla nebo text).
Popis
editovatPři práci se souborem je nutné chápat jeho formát, tj. význam dat, které jsou v něm uložena. Většina spustitelných souborů používá specifický formát, který odpovídá použité počítačové platformě nebo předepsanému standardu. Na začátku je typicky hlavička, která obsahuje metadata popisující další části souboru.
Ve všech systémech jsou používány spustitelné soubory, které neobsahují strojový kód, ale zápis zdrojového kódu v interpretovaném v programovacím jazyce. Označujeme je jako skripty (v unixových systémech jako shellové skripty, v DOSu a Microsoft Windows pak jako dávkový soubor s příponou .BAT
).
Velmi jednoduchým formátem spustitelného souboru jsou soubory s příponou .COM
, které jsou používány v systému DOS a Microsoft Windows. Soubor vlastně ani žádný formát nemá, protože jediným obsahem takového souboru je strojový kód, který je načten do paměti počítače a následně je přímo bez úprav od svého začátku vykonán procesorem.
V Microsoft Windows jsou spustitelné soubory rozlišeny příponou souboru. Nejčastěji se používají soubory s příponou EXE, které mohou mít různé interní formáty (např. MZ, PE). Spustíme-li EXE soubor, zavaděč nejprve analyzuje spustitelný soubor, pak zavede do paměti jeho předepsanou výkonnou část a v případě, že jsou použity dynamické knihovny, jsou zavedeny do paměti dynamickým zavaděčem podle obsaženého seznamu požadovaných DLL souborů.
V unixových systémech jsou spustitelné soubory označeny oprávněním „x“, přičemž přípona souboru zde nemá žádný význam. Dříve se pro binární spustitelné soubory používal formát a.out, avšak v současné době je využíván přenositelný formát ELF (používá ho též PlayStation 3, Wii a další systémy). Stejně jako u Microsoft Windows je využíván zavaděč a dynamické knihovny (viz výše).
Programovací jazyk Java používá pro spustitelné soubory univerzální bytecode (bajtkód), který je na příslušném počítači interpretován nebo přeložen do strojového kódu použitého procesoru pomocí JIT kompilátoru.