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;
}