召集公約
資源
概述/比較: Agner Fog 的精彩會議指南 。此外, x86 ABIs(維基百科) :函式的呼叫約定,包括 x86-64 Windows 和 System V(Linux)
。
-
SystemV x86-64 ABI(官方標準) 。由 Windows 使用的所有作業系統。 ( 這個 github wiki 頁面由 HJ Lu 保持最新,連結到 32 位,64 位和 x32。還連結到 ABI 維護者/貢獻者的官方論壇。)另請注意, clang / gcc sign / zero 將 narrow args 擴充套件為 32 位 ,即使寫入的 ABI 不需要它。Clang 生成的程式碼取決於它。
-
SystemV
32bit(i386)
ABI(官方標準) ,由 Linux 和 Unix 使用。 ( 舊版 )。 -
OS X 32 位 x86 呼叫約定,包含其他的連結 。64 位呼叫約定是 System V. Apple 的網站只連結到 FreeBSD pdf。
-
Windows
__vectorcall
:記錄 32 位和 64 位版本 -
Windows 32bit
__stdcall
:用於呼叫 Win32 API 函式。該頁面連結到其他呼叫約定文件(例如__cdecl
)。 -
為什麼 Windows64 在 x86-64 上使用來自所有其他作業系統的不同呼叫約定? :一些有趣的歷史,尤其是對於 SysV ABI,其中郵件列表存檔是公開的,並在 AMD 釋出第一個晶片之前返回。