我在几个地方看到微软x64
平台的调用约定被缩小到只有一个:调用者清理堆栈(cdecl
),参数以堆栈和寄存器的组合传递(我在这里不详细介绍)。我假设如果这是操作系统的调用约定,那么可能所有其他针对 Windows 的编译器(例如 mingw-w64)也遵循它。
这种调用约定在其他主要平台(x64
Linux 等)上也适用吗?或者 Linux 是否仍然使用多种调用约定,或者甚至只是一种但不同的一种?在Linux上是否允许GCC
或Clang
允许多个调用约定?x64
我在几个地方看到微软x64
平台的调用约定被缩小到只有一个:调用者清理堆栈(cdecl
),参数以堆栈和寄存器的组合传递(我在这里不详细介绍)。我假设如果这是操作系统的调用约定,那么可能所有其他针对 Windows 的编译器(例如 mingw-w64)也遵循它。
这种调用约定在其他主要平台(x64
Linux 等)上也适用吗?或者 Linux 是否仍然使用多种调用约定,或者甚至只是一种但不同的一种?在Linux上是否允许GCC
或Clang
允许多个调用约定?x64