extern "C" {
__int64 __declspec(dllexport) get_rdtsc()
{
unsigned __int64 i;
i = __rdtsc();
return i;
}
}
关于windows下rdtsc的两个问题点:
- 不能像linux平台下那样写 否则在windows下编译不出64位库,python load 库需要64位
- __declspec(dllexport) 这个不加 找不到库里面的函数
linux 平台下rdtsc的计算代码:
typedef long long __u64;
typedef long __u32;
__u64 get_rdtsc(){
__u32 hi,lo;
__asm__ __volatile__
(
"rdtsc" : "=a" (lo),"=d"(hi)
);
return (__u64) hi<<32|lo;