ABI стандартизирует использование ресурсов ЦП и то, как типы языков программирования отображаются в нетипизированные инструкции ЦП и схемы памяти.
Например, ABI указывает, как регистры используются во время вызова функции или макет объекта C ++.
ISA процессора дает программисту полную свободу, ABI - соглашение низкого уровня, похожее на соглашение API.
Поскольку ABI привязан к архитектуре CPU, разные процессоры не могут иметь один и тот же ABI. Однако термин ABI не является абсолютно определенным: ABI является спецификацией, и вполне возможно написать общую.
Одним из таких примеров является Itanium C ++ ABI , который повторно используется с небольшими дополнениями в качестве основы для C ++ ABI в других архитектурах.
Наконец, поскольку для архитектуры ЦП нет единого выбора соглашений, каждый может написать и предложить свой ABI для этой архитектуры.
Нередко имеется несколько ABI для процессора, однако эта свобода зарезервирована для людей, компилирующих ОС и / или системные библиотеки.
Конечный пользователь должен соответствовать ABI, установленному ОС / библиотеками, иначе их двоичный файл не будет говорить на том же низкоуровневом языке, что и остальная часть их системы.