在x64上调用约定

时间:2013-08-08 20:51:16

标签: compiler-construction 64-bit x86-64 calling-convention

我在几个地方看到,x64平台的Microsoft调用约定被缩小到只有一个:调用者清理堆栈(cdecl),参数以堆栈和寄存器的组合传递(I我不会在这里详细说明)。我假设如果这是操作系统的调用约定,那么可能所有其他针对Windows的编译器(例如mingw-w64)也会遵循它。

这个调用约定在其他主要平台(x64 Linux等)上也是如此吗?或者Linux仍然使用多个调用约定,甚至只使用一个但不同的调用约定? GCCClang是否允许x64 Linux上的多个调用约定?

1 个答案:

答案 0 :(得分:10)

我刚刚找到答案herehere。基本上,Windows以一种方式实现,其他人以另一种方式实现,但每个平台只采用一种方式(与使用x86的每个平台的多种方式相反)