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

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

Двоичный (бинарный) интерфейс приложений (англ. application binary interface, ABI) — набор соглашений для доступа приложения к операционной системе и другим низкоуровневым сервисам, спроектированный для переносимости исполняемого кода между машинами, имеющими совместимые ABI[1]. В отличие от API, который регламентирует совместимость на уровне исходного кода[2]. ABI можно рассматривать как набор правил, позволяющих компоновщику объединять откомпилированные модули компонента без перекомпиляции всего кода, в то же время определяя двоичный интерфейс[3].

Уровни и интерфейсы между ними. API, ABI и архитектура набора команд (ISA) [4]

Двоичный интерфейс приложений регламентирует[2][3]:

Двоичный интерфейс приложений отличается от интерфейса программирования приложений (API). API описывает функциональность, предоставляемую библиотеками: список функций, аргументы функций, возвращаемые значения, возможные исключения, поведение функций.

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

Бинарный интерфейс встраиваемых приложений (англ. embedded application binary interface, EABI) — набор соглашений для использования во встраиваемом программном обеспечении, описывающий[6]:

  • форматы файлов;
  • типы данных;
  • способы использования регистров;
  • организацию стека;
  • способы передачи параметров функциям.

Если объектный файл был создан компилятором, поддерживающим EABI, становится возможной компоновка этого объектного файла любым компоновщиком, поддерживающим тот же EABI.

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

Примечания[править | править вики-текст]

  1. Encyclopedia Of Information Technology. — Atlantic Publishers & Distributors (P) Limited, 2007. — P. 4. — ISBN 9788126907526.
  2. 1 2 Ecker, Müller, Dömer, 2009.
  3. 1 2 Vaduva, 2015.
  4. Marinescu D.C. Cloud Computing: Theory and Practice. — Elsevier Science, 2013. — P. 134-135. — ISBN 9780124046412.
  5. Marinescu, D.C. Cloud Computing: Theory and Practice. — Elsevier Science, 2013. — P. 134. — ISBN 9780124046412.
  6. Walls, 2012.

Литература[править | править вики-текст]

  • Vaduva, A. Learning Embedded Linux Using the Yocto Project. — Packt Publishing, 2015. — P. 24-25. — 334 p. — ISBN 9781784395193.
  • David A. Patterson; John L. Hennessy. Computer Organization and Design, 3th Edition: The Hardware/Software Interface (The Morgan Kaufmann Series in Computer Architecture and Design): Computer Organization and Design, 3th Edition. — Elsevier/Morgan Kaufmann, 2004. — 621 p. — ISBN 9781558606043.
  • Walls, C. Embedded Software: The Works. — Elsevier Science, 2012. — P. 26-27. — 436 p. — ISBN 9780124159693.
  • Wolfgang Ecker, Wolfgang Müller, Rainer Dömer. Hardware-dependent Software: Principles and Practice. — Springer Netherlands, 2009. — P. 25-26. — 299 p. — ISBN 9781402094361.

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