Interfejs binarny aplikacji (ABI)
Interfejs binarny aplikacji (ABI) to zbiór reguł, które regulują interakcje między programami, bibliotekami a systemem operacyjnym. Obejmuje również współpracę różnych komponentów danej aplikacji. ABI różni się od interfejsu programowania aplikacji (API) tym, że dotyczy oprogramowania w wersji skompilowanej, a nie w formie kodu źródłowego.
Definicje i funkcje ABI
ABI definiuje:
- konwencję wywołań podprogramów,
- sposób przekazywania argumentów,
- metodę odbierania wartości zwracanych,
- liczbę i znaczenie argumentów wywołania (syscall),
- format plików obiektowych i bibliotek.
Przykładem kompletnego ABI jest Intel Binary Compatibility Standard (iBCS), który umożliwia uruchamianie aplikacji z jednego systemu operacyjnego na innym, pod warunkiem wsparcia dla konkretnego ABI.
Zastosowanie ABI w systemach uniksopodobnych
W systemach uniksopodobnych nie kładzie się dużego nacisku na zgodność na poziomie ABI, gdyż większe znaczenie ma zgodność na poziomie API, czyli kodu źródłowego. Choć większość nowoczesnych systemów uniksowych korzysta z formatu ELF dla plików wykonywalnych, programy z jednego systemu uniksowego często nie działają poprawnie w innym. Wyjątkiem są systemy z rodziny BSD, które, dzięki specjalnemu trybowi ABI, pozwalają na uruchamianie aplikacji linuksowych.
Podsumowanie
ABI jest kluczowym elementem w architekturze systemów operacyjnych, regulującym interakcje między różnymi komponentami oprogramowania. Zrozumienie ABI jest istotne dla programistów oraz inżynierów systemowych, szczególnie w kontekście przenoszenia aplikacji między różnymi systemami operacyjnymi.