luc*_*ios 10 c c++ function-calls cdecl fastcall
我会听一些人说__fastcall比这更快__cdecl并且__stdcall导致它将两个参数放入寄存器,而不是其他一个调用; 但是,另一方面,这不是C中使用的标准.
我想知道什么是__fastcall不合适的,就像C中的标准,以及何时我将在我的代码中使用它.
Ben*_*igt 10
x86平台的不寻常之处在于它没有定义全局ABI和调用约定.
Win32/x86确实如此,它标准化了stdcall.调用约定之间存在各种权衡 - 在寄存器中放置参数的速度更快,但它会强制调用者溢出以前使用这些寄存器的任何内容.所以很难预测哪个会带来更好的性能.
重要的是要有一个统一的标准调用约定来实现不同编译器(甚至不同的编程语言)之间的互操作性.
其他平台不具备cdecl,stdcall或fastcall约定.它们没有相同的寄存器集.在某些情况下,他们根本没有登记册.但他们仍然可以使用C代码.
Win32/x86_64不使用stdcall,它使用体系结构定义的约定.
Linux/x86也有一个约定.
| 归档时间: |
|
| 查看次数: |
3588 次 |
| 最近记录: |