Двоичный интерфейс приложений

Материал из Википедии — свободной энциклопедии
(перенаправлено с «ABI»)
Перейти к: навигация, поиск

Двоичный (бинарный) интерфейс приложений (англ. Application Binary Interface, англ. ABI) — набор соглашений между программами, библиотеками и операционной системой, обеспечивающих взаимодействие этих компонентов на низком уровне на данной платформе.

Двоичный интерфейс приложений регламентирует размер и выравнивание основных типов данных, формат передачи аргументов и возвращаемого значения при вызове функции, состав и формат системных вызовов, форматы исполняемых файлов, файлов библиотек, объектных файлов и т. п. Некоторые ABI описывают преобразование имён функций в C++, поддержку исключений.

Важно понимать разницу между ABI и API (программным интерфейсом приложений). API определяет интерфейс между исходным кодом создаваемой программы и библиотеками, обеспечивая возможность компиляции этого кода на любой платформе. В свою очередь, ABI позволяет скомпилированному объектному коду функционировать без изменений на любой платформе, где используется та же конфигурация ABI. API не обеспечивает совместимость времени исполнения программы — это задача ABI.


Бинарный интерфейс встроенных приложений (англ. Embedded Application Binary Interface, англ. EABI) — набор соглашений для форматов файлов, типов данных, использования регистров, организации стека, и передачи параметров функций для использования во встроенном программном обеспечении.

Компиляторы, которые поддерживают EABI, создают объектный код, совместимый с кодом, генерируемым другими компиляторами, что позволяет разработчикам связывать библиотеки, созданные одним компилятором, с объектным кодом, созданным другим компилятором. Разработчики, пишущие свой код на ассемблере также могут использовать EABI для взаимодействия с кодом ассемблера, сгенерированным совместимым компилятором.

Основные отличия EABI от ABI в операционных системах общего назначения заключается в том, что в коде приложения допускаются привилегированные команды, а динамическое связывание (линковка) не требуется (а иногда и полностью запрещена), а также, в целях экономии памяти, используется более компактная организация стека.

См. также[править | править вики-текст]

Ссылки[править | править вики-текст]