У Вас был какой-либо реальный вариант использования для использования соглашения о вызовах fastcall?
Спасибо.
Вот статья, объясняющая, когда следует использовать fastcall. В ней указывается случай, когда у вас нет другого выхода, кроме как использовать его:
Некоторые классы VCL, такие как TList, позволяют указать функцию обратного вызова (в случае TList - в случае TList). Вам придется использовать ключевое слово __fastcall и в этом случае, поскольку VCL ожидает этого.
__ fastcall пытается передать аргументы функции в регистры ЦП, а не в стек, если это возможно, что происходит быстрее.
Вот ссылка на статью MSDN, объясняющую соглашение о вызовах __fastcall: http://msdn.microsoft.com/en-us/library/6xa169sk (VS.71) .aspx
Первые два DWORD или меньше аргументы передаются в ECX и EDX регистры; все остальные аргументы прошел справа налево.
Это означает, что это будет работать только для первых двух аргументов и только если они <= 32 бит.
В целом, я бы сказал, не ждите от этого больших преимуществ в производительности.
У меня есть один случай, когда я эффективно его использую - это очень маленькая процедура asm (3 инструкции), которая манипулирует одним значением в регистре.
Для чего угодно, кроме самых маленьких и наиболее критичных к производительности подпрограмм, хотя соглашение о вызовах не должно иметь никакого значения.