如果您正在编写一个对延迟非常敏感的应用程序,那么在 C++ 函数中嵌入汇编程序的限制是什么(并正常使用 C++ 函数调用),如下所示:
inline __int64 GetCpuClocks()
{
// Counter
struct { int32 low, high; } counter;
// Use RDTSC instruction to get clocks count
__asm push EAX
__asm push EDX
__asm __emit 0fh __asm __emit 031h // RDTSC
__asm mov counter.low, EAX
__asm mov counter.high, EDX
__asm pop EDX
__asm pop EAX
// Return result
return *(__int64 *)(&counter);
}
(上面的函数来自我看到的另一篇 SO 帖子)
你能把汇编内联函数当作一个黑盒子吗?您能否轻松地从汇编程序中执行的计算中检索结果?是否存在您不知道寄存器中当前有哪些变量等危险?它导致的问题多于解决的问题,或者对于特定的小任务是否可以接受?
(假设您的架构将是固定的,并且是已知的)
编辑我刚刚发现了这个,这就是我所暗示的:
http://www.codeproject.com/Articles/15971/Using-Inline-Assembly-in-CC
EDIT2 这更针对 Linux 和 x86 - 它只是一个一般的 C++/汇编程序问题(或者我认为)。