Вот что говорит Википедия:
В компьютерном программном обеспечении приложение бинарный интерфейс (ABI) описывает низкоуровневый интерфейс между приложение (или любой тип) программы и операционной системы или другой приложение.
ABI охватывают такие детали, как тип данных, размер и выравнивание; Вызов конвенции, которая аргументы функций возвращаемые значения; система номера вызовов и как приложение должны выполнять системные вызовы операционная система; и в случае полная операционная система ABI, двоичный формат объектных файлов, программа библиотеки и т.д. Полный ABI, таких как Intel Binary Compatibility Стандарт (iBCS), позволяет программе из одной операционной системы, поддерживающей что ABI запускается без изменений на любую другую такую систему, предоставленную что необходимые общие библиотеки настоящего и аналогичных предпосылок выполнено.
Я предполагаю, что ABI - это соглашение или стандарт, а компиляторы/линкеры используют это соглашение для создания объектных кодов. Это правильно? Если да, кто сделал эти соглашения (компании или какая-то организация)? Каково было, когда ABI не было? Есть ли документы об этих ABI, к которым мы можем относиться?