====== Application Binary Interface (ABI) ====== **Application Binary Interface (ABI)** je rozhraní, které definuje způsob, jakým spolu na úrovni binárního kódu komunikují dva softwarové moduly – typicky aplikace a operační systém nebo aplikace a knihovny. ABI určuje pravidla, podle kterých jsou volány funkce, předávány parametry, organizována data v paměti a jak probíhá komunikace mezi binárními komponentami. ===== Charakteristika ===== * Definuje **binární kompatibilitu** mezi programy a knihovnami. * Určuje **volací konvence** (calling conventions). * Specifikuje **rozložení datových struktur** v paměti. * Popisuje **formát binárních souborů**, registrů a způsob předávání návratových hodnot. * Je závislé na **architektuře procesoru** a **toolchainu** (kompilátor, linker). ===== ABI vs. API ===== * **API** – rozhraní na úrovni zdrojového kódu, čitelné člověkem, nezávislé na architektuře. * **ABI** – rozhraní na úrovni zkompilovaného binárního kódu, závislé na platformě a kompilátoru. * API definuje, *co* programátor volá; ABI definuje, *jak* to funguje na úrovni strojového kódu. ===== Příklady použití ===== * **Linux ABI** – stabilní binární rozhraní mezi jádrem a uživatelským prostorem. * **C/C++ ABI** – pravidla pro linkování objektových souborů, name mangling, výjimky a layout objektů. * **Blockchain ABI** – např. Ethereum používá ABI pro komunikaci mezi smart kontrakty a aplikacemi. ===== Význam ===== ABI je klíčové pro: * kompatibilitu mezi různými verzemi knihoven, * možnost používat binární moduly z různých kompilátorů, * stabilitu softwarového ekosystému, * interoperabilitu mezi programy na stejné platformě. ===== Synonyma / související pojmy ===== * binární rozhraní * volací konvence * API (konceptuálně příbuzné, ale odlišné)