Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ cpp-linux:关于rdtsc_C++_Linux_Rdtsc - Fatal编程技术网

C++ cpp-linux:关于rdtsc

C++ cpp-linux:关于rdtsc,c++,linux,rdtsc,C++,Linux,Rdtsc,我在代码中使用以下函数: static __inline__ unsigned long long rdtsc(void){ unsigned long long int x; __asm__ volatile (".byte 0x0f, 0x31" : "=A" (x)); return x; } 此函数是否返回自上次引导以来的滴答数? 在哪里可以找到有关此函数的文档?RDTSC获取自上次重置以来的cpu周期数,请参阅 “英特尔指令集手册”第2A和B卷,作为更可靠的来源: 处理器

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

static __inline__ unsigned long long rdtsc(void){
  unsigned long long int x;
  __asm__ volatile (".byte 0x0f, 0x31" : "=A" (x));
  return x;
}
此函数是否返回自上次引导以来的滴答数?
在哪里可以找到有关此函数的文档?

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

“英特尔指令集手册”第2A和B卷,作为更可靠的来源:

处理器单调递增时间戳计数器MSR 每个时钟周期,并在处理器复位时将其重置为0。 请参阅《英特尔®64和IA-32》第16章中的“时间戳计数器” 体系结构软件开发人员手册,第3B卷,用于特定用途 时间戳计数器行为的详细信息


附带说明:您不应该发出字节,而应该使用实际的
RTDSC
指令助记符,使其更具可读性。

您是否尝试过英特尔手册?同样,一个简单的维基百科搜索也会产生这样的结果——我对
.byte
的搜索方式感到惊讶,但它似乎从这里被提升了。我想知道他们为什么这样做?@mattjgalloway:我记得较老的内联汇编程序有时会要求内联字节发射,因为他们不认识助记符,那是很久以前的事了,除了混淆readerYeh之外没有任何好处,这是有意义的:-)。