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之外没有任何好处,这是有意义的:-)。