使用调用约定fastcall的任何真实用例?

rke*_*erm 6 c++ stack calling-convention

你有没有使用调用约定fastcall的真实用例?

谢谢.

hum*_*mba 5

如果可能,__ fastcall尝试传递CPU寄存器中的函数参数而不是堆栈,这更快.

这是一篇MSDN文章的链接,解释了__fastcall调用约定:http://msdn.microsoft.com/en-us/library/6xa169sk( VS.71) .aspx

前两个DWORD或更小的参数在ECX和EDX寄存器中传递; 所有其他参数从右到左传递.

这意味着这只适用于前两个参数,并且只有在它们<= 32位时才有效.
总的来说,我会说,不要指望任何重大的性能优势.


luv*_*ere 3

这里有一篇文章解释了何时使用 fastcall。它实际上指定了一种情况,当你实际上别无选择只能使用它时:

某些 VCL 类(例如 TList)允许您指定回调函数(对于 TList 来说是排序例程)。在这种情况下,您也必须使用 __fastcall 关键字,正如 VCL 所期望的那样。