ABI
ABI(アプリケーション・バイナリ・インターフェース、Application Binary Interface)
オブジェクトコードレベルの互換性に関する概念?
ABI (Application Binary Interface) とは、機械語レベルでのインターフェースのことです。
ref: Cの可変長引数とABIの奇妙な関係 #C - Qiita
not API
キーワード: 呼出規約(英: calling convention)、レジスタ呼出規約
「レジスタの用途」「スタックの使い方」「関数呼び出しのルール」「メモリ空間の割り付け」「C言語の型のサイズ・アラインメントと表現」「システムコールの呼び出し方」「OSから起動時に渡ってくる情報のフォーマット」「OS側のローダーの仕様」「バイナリの形式」「OS側の動的リンカーの仕様」「共有ライブラリの形式」「静的リンカーの仕様」「リロケーションの形式」「C++シンボルマングリングの規則」などがABIに含まれることがあります。
ref: Cの可変長引数とABIの奇妙な関係 #OS - Qiita
組み込み用にはEABIというものもあるらしい
Linux Standard BaseにはいろいろなABIの仕様がある
→Linux Foundation Referenced Specifications
UNIXのABI
x86 psABIs / x86-64 psABI · GitLab
Intel Binary Compatibility Standard(IBCS)(1998年以降なし)
System V ABI
Intel386 ABI
x86_64(ISA)
amd64 (ABI)
x64 (ABI)
x32 (ABI)
WindowsのABI
x64 ABI conventions | Microsoft Learn
Windows Application Binary Interface(WABI)
関連
オブジェクトファイルフォーマット
64ビットデータモデル
ILP64
LP64
RISC-V呼出規約
参考
アプリケーションバイナリインタフェース - Wikipedia
Cの可変長引数とABIの奇妙な関係 - Qiita
メモ
Itanium C++ ABI
C++ ABI Summary
Itanium C++ ABI
Application Binary Interface - プログラミング言語 D (日本語訳)
SN Systems - ABIバグは「悪夢」
呼出規約 - Wikipedia
x86-64とARM64の可変長引数関数の呼び出し規約 #arm64 - Qiita
【Q&A】 x86-64の構造体の値渡しのABIについて - Qiita