Compiler construction x64上的呼叫约定

Compiler construction x64上的呼叫约定,compiler-construction,64-bit,x86-64,calling-convention,Compiler Construction,64 Bit,X86 64,Calling Convention,我在几个地方看到,Microsoft针对x64平台的调用约定仅限于一种:调用方清理堆栈(cdecl),参数以堆栈和寄存器的组合形式传递(这里我不详细介绍)。我假设,如果这是操作系统的调用约定,那么可能所有其他针对Windows的编译器(例如mingw-w64)也会遵循它 这种调用约定在其他主要平台(x64Linux等)上也适用吗?或者Linux仍然使用多个调用约定,或者仅仅使用一个不同的调用约定?GCC或Clang是否允许在x64Linux上使用多个调用约定?我刚刚找到了答案,并且。基本上,Wi

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


这种调用约定在其他主要平台(
x64
Linux等)上也适用吗?或者Linux仍然使用多个调用约定,或者仅仅使用一个不同的调用约定?
GCC
Clang
是否允许在
x64
Linux上使用多个调用约定?

我刚刚找到了答案,并且。基本上,Windows是一种方式,其他所有人都是另一种方式,但每个平台都只有一种方式(而不是每个平台都有多种方式使用
x86

那些快乐的日子即将结束。Microsoft正在添加_u矢量调用约定。多达六个
\uuum128
值通过SSE2寄存器。不要对任何一方指手画脚,但您可能会认为,在x86调用约定造成的所有痛苦之后,就标准达成一致将是x64的优先事项