Intel x86 Assembly& Microarchitecture 64位系统V

示例

这是许多POSIX操作系统上64位应用程序的默认调用约定。

参数

前八个标量参数按顺序(依次)传递RDI,RSI,RDX,RCX,R8,R9,R10,R11。超过前八个参数的参数将放置在堆栈上,而较早的参数则更靠近堆栈的顶部。如果不再需要,则调用方负责在调用后将这些值从堆栈中弹出。

返回值

对于标量返回类型,返回值放在RAX中。通过从概念上更改函数的签名以在参数列表的开头添加一个参数(该指针是指向放置返回值的位置的指针),可以完成返回结构之类的较大类型的操作。

保存和破坏的寄存器

被呼叫者保留RBP,RBX和R12-R15。被调用方可以修改所有其他寄存器,并且如果调用方希望以后使用该值,则调用方必须保留其自身的值(例如,在堆栈上)。