Интернет магазин китайских планшетных компьютеров



Компьютеры - Двоичный интерфейс приложений

23 января 2011





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

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

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


Встроенный бинарный интерфейс приложений — набор соглашений для форматов файлов, типов данных, использования регистров, организации стека, и передачи параметров функций для использования во встроенном программном обеспечении.

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

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



Просмотров: 1052


<<< Hardware abstraction layer
Многозадачность >>>