これはウィキペディアが言うことです:
コンピューター ソフトウェアでは、アプリケーション バイナリ インターフェイス (ABI) は、アプリケーション (または任意の種類の) プログラムとオペレーティング システムまたは別のアプリケーションとの間の低レベル インターフェイスを表します。
ABI は、データ型、サイズ、配置などの詳細をカバーします。関数の引数がどのように渡され、戻り値が取得されるかを制御する呼び出し規則。システム コール番号と、アプリケーションがオペレーティング システムに対してシステム コールを行う方法。完全なオペレーティング システム ABI の場合、オブジェクト ファイル、プログラム ライブラリなどのバイナリ形式。Intel Binary Compatibility Standard (iBCS) などの完全な ABI を使用すると、必要な共有ライブラリが存在し、同様の前提条件が満たされている場合、その ABI をサポートするオペレーティング システムのプログラムを他のオペレーティング システムで変更することなく実行できます。
ABI は規則または標準であり、コンパイラ/リンカーはこの規則を使用してオブジェクト コードを生成すると思います。そうですか?もしそうなら、誰がこれらの慣習を作ったのですか (企業または組織)? ABI がなかったときはどうでしたか? これらの ABI について参照できるドキュメントはありますか?