ABIにおける呼び出し規約とは?
呼び出し規約は、呼び出し元と呼び出し先が引数の受け渡し、結果の返却、そしてそれぞれが保持すべきレジスタについて合意する方法を規定する、アプリケーションバイナリインタフェースの一部です。また、呼び出しの前後でスタックがどのように構築され後始末されるかも定めます。これは契約であるため、異なるツールでコンパイルされたコードは、同じ規約を共有する場合にのみ互いを呼び出せます。
なぜ重要か
コンパイル単位間で呼び出し規約が一致しないと、引数の破損、クラッシュ、あるいは静かに誤った結果を招きます。規約を知ることは、外部関数インタフェースや複数言語混在のビルドに不可欠です。
関連ガイド
What Is a Stack Frame?A stack frame is the block of stack memory for one function call, holding its arguments, local variables, and…
What Is Symbol Resolution?Symbol resolution is the linker step that matches each reference to a name, such as a function or variable, w…
What Is a Dynamic Linker?A dynamic linker loads the shared libraries a program depends on at startup and binds its references to the f…