召集公约
资源
概述/比较: 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 发布第一个芯片之前返回。