c – 为什么不应该使用__fastcall代替标准__cdecl?

我会听一些人说__fastcall比__cdecl快,__stdcall因为它将两个参数放在寄存器中,而不是其他调用中的一个;但另一方面,这不是C中使用的标准.

我想知道什么使__fastcall不喜欢像C中的一个标准,当我将在我的代码中使用它.

解决方法

x86平台是不寻常的,因为它没有定义全局ABI和调用约定.

Win32 / x86是,它标准化在stdcall.在调用约定之间有各种折衷 – 将参数放入寄存器中更快,但是它强制调用者溢出以前使用这些寄存器的任何内容.所以很难预测哪一个更好的表现.

重要的是要有一个统一的标准调用约定来实现不同编译器(甚至是不同的编程语言)之间的互操作性.

其他平台没有cdecl,stdcall或fastcall约定.他们没有相同的寄存器组.在某些情况下,他们甚至没有注册.但是他们仍然可以使用C代码.

Win32 / x86_64不使用stdcall,它使用架构定义的约定.

Linux / x86也有一个约定.

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...