CPU C++ 中的计时器
CPU timer in C++
unsigned char ticks_bits[3] = { 0x0F, 0x31, 0xC3};
__uint64_t ( * ticks ) () = (__uint64_t (*) ()) & ticks_bits;
__uint64_t T = ticks(); // CRASH!
我在 Windows-32 位中使用此代码多年以获得 CPU 报价。
但它会在 Linux 64 位中崩溃。有什么办法让它起作用吗?
我过去做过的事情是这样的:
uint64_t
clock_ticks()
{
uint64_t ret;
__asm__ volatile (".byte 0x0f, 0x31" : "=A" (ret));
return ret;
}
unsigned char ticks_bits[3] = { 0x0F, 0x31, 0xC3};
__uint64_t ( * ticks ) () = (__uint64_t (*) ()) & ticks_bits;
__uint64_t T = ticks(); // CRASH!
我在 Windows-32 位中使用此代码多年以获得 CPU 报价。 但它会在 Linux 64 位中崩溃。有什么办法让它起作用吗?
我过去做过的事情是这样的:
uint64_t
clock_ticks()
{
uint64_t ret;
__asm__ volatile (".byte 0x0f, 0x31" : "=A" (ret));
return ret;
}