我会听一些人说__fastcall比__cdecl快,__stdcall因为它将两个参数放在寄存器中,而不是其他
调用中的一个;但另一方面,这不是C中使用的标准.
我想知道什么使__fastcall不喜欢像C中的一个标准,当我将在我的代码中使用它.
x86平台是不寻常的,因为它没有定义全局ABI和
调用约定.
Win32 / x86是,它标准化在stdcall.在调用约定之间有各种折衷 – 将参数放入寄存器中更快,但是它强制调用者溢出以前使用这些寄存器的任何内容.所以很难预测哪一个更好的表现.
重要的是要有一个统一的标准调用约定来实现不同编译器(甚至是不同的编程语言)之间的互操作性.
其他平台没有cdecl,stdcall或fastcall约定.他们没有相同的寄存器组.在某些情况下,他们甚至没有注册.但是他们仍然可以使用C代码.
Win32 / x86_64不使用stdcall,它使用架构定义的约定.
Linux / x86也有一个约定.