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中崩溃。有没有办法让它发挥作用?
答案 0 :(得分:1)
我过去做过的事情是这样的:
uint64_t
clock_ticks()
{
uint64_t ret;
__asm__ volatile (".byte 0x0f, 0x31" : "=A" (ret));
return ret;
}