C++中的CPU计时器

CPU timer in C++

本文关键字:计时器 CPU 中的 C++      更新时间:2023-10-16
unsigned char ticks_bits[3] = { 0x0F, 0x31, 0xC3};
__uint64_t ( * ticks ) () = (__uint64_t (*) ()) & ticks_bits;
__uint64_t T = ticks(); // CRASH!

我已经在Windows-32bit中使用了很多年这个代码来获取CPU时钟。但它将在Linux 64位中崩溃。有办法让它发挥作用吗?

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

uint64_t
clock_ticks()
{
  uint64_t ret;
  __asm__ volatile (".byte 0x0f, 0x31" : "=A" (ret));
  return ret;
}