C ++中的CPU计时器

时间:2015-06-26 03:01:01

标签: c++ c linux timer

unsigned char ticks_bits[3] = { 0x0F, 0x31, 0xC3};
__uint64_t ( * ticks ) () = (__uint64_t (*) ()) & ticks_bits;

__uint64_t T = ticks(); // CRASH!

我已经在Windows-32bit中使用此代码多年以获得CPU滴答声。 但它会在Linux 64bit中崩溃。有没有办法让它发挥作用?

1 个答案:

答案 0 :(得分:1)

我过去做过的事情是这样的:

uint64_t
clock_ticks()
{
  uint64_t ret;

  __asm__ volatile (".byte 0x0f, 0x31" : "=A" (ret));

  return ret;
}