用ASM代码测时间中,有如下的一段代码:
__asm
{
RDTSC
mov HighStart, edx
mov LowStart, eax
}
想将这段ASM代码用一个函数来
包装一下,但是用指针传递变量HighStart和LowStart的地址:
inline void func( LONG* pnH, LONG* pnL ){
__asm
{
RDTSC
mov [pnH], edx
mov [pnL], eax
}
}
执行结果总是不正确,
忘记了在ASM里,需要用通用寄存器来进行寻址:
inline void func( LONG* pnH, LONG* pnL ){
__asm{
RDTSC
push ebx
mov ebx, dword ptr [pnH]
mov dword ptr [ebx], edx
mov ebx, dword ptr [pnL]
mov dword ptr [ebx], eax
pop ebx
}
}
这下终于OK。
运行环境:VS2010,C++