3

我在我的代码中使用以下函数:

static __inline__ unsigned long long rdtsc(void){
  unsigned long long int x;
  __asm__ volatile (".byte 0x0f, 0x31" : "=A" (x));
  return x;
}

此函数是否返回自上次启动以来的滴答数?我在哪里可以找到有关此功能的文档?

4

1 回答 1

1

RDTSC获取自上次重置以来的 cpu 周期数,请参阅wikipedia

英特尔指令集手册第 2A 和 B 卷,作为更受信任的来源:

处理器在每个时钟周期单调递增时间戳计数器 MSR,并在处理器复位时将其复位为 0。有关时间戳计数器行为的具体细节,请参阅英特尔® 64 位和 IA-32 架构软件开发人员手册第 3B 卷第 16 章中的“时间戳计数器”。

作为旁注:您不应该发出字节,而是使用实际的RTDSC指令助记符,使其更具可读性。

于 2012-01-16T14:34:40.607 回答