+ -
当前位置:首页 → 问答吧 → 请问vc下的内联汇编应该怎么写?

请问vc下的内联汇编应该怎么写?

时间:2010-11-26

来源:互联网

想写一个计时函数

struct Timer
{
UINT64 start;
UINT64 end;
}

void StartTimer( Timer& timer )
{
_RDTSC( timer.start );
}

#define _RDTSC(val)\
__asm{\
rdtsc\
MOV val, eax\
mov val+4, edx\
}

编译时不通过,想问问怎么写才能实现将edx:eax的值写入timer.start,谢谢!

作者: gogdizzy   发布时间: 2010-11-26

我现在写成了
C/C++ code

    #define _RDTSCLL( val ) \
        do{\
            UINT32 _a, _d;\
            if(1){\
                __asm _emit 0x0F \
                __asm _emit 0x31 \
                __asm mov _a, eax \
                __asm mov _d, edx \
            }\
            val = (((UINT64)_d)<<32) | ((UINT64)_a); \
        }while(0)



感觉有点浪费,谁能帮忙提点意见?

作者: gogdizzy   发布时间: 2010-11-26