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é)