Бинарный интерфейс приложения
-
Определение и роль ABI
- ABI — это интерфейс между двоичными модулями, определяющий доступ к структурам данных и процедурам в машинном коде.
- API определяет доступ к данным в исходном коде, который является высокоуровневым и аппаратно-независимым.
-
Соглашение о вызове
- ABI определяет соглашение о вызове, которое описывает, как данные передаются в качестве входных данных и считываются как выходные данные.
- Примеры соглашений о вызовах включают x86.
-
Стандартизация и ответственность
- ABI может быть стандартизирован и обычно контролируется компилятором, операционной системой или библиотекой.
- Прикладные программисты могут напрямую взаимодействовать с ABI при написании программ на разных языках программирования или компиляторах.
-
Детали ABI
- ABI включает в себя детали, такие как структура регистрового файла и организация стека.
- Он определяет, передаются ли параметры в стек или регистры, и какие регистры используются для каких функций.
-
Полный ABI и EABI
- Полный ABI, например Intel Binary Compatibility Standard, позволяет запускать программы без изменений в разных операционных системах.
- EABI определяет стандартные соглашения для встроенного программного обеспечения и оптимизирует производительность в ограниченных ресурсах.
- EABIs опускают многие абстракции, характерные для сложных операционных систем, и могут влиять на производительность.
-
Примеры и рекомендации
- В статье упоминаются конкретные примеры ABI, включая PowerPC, Arm EABI и MIPS EABI.
- Предоставляются ссылки на руководства и стандарты ABI, а также рекомендации по бинарной совместимости.