我是 C++ 和基准测试的新手
我不明白这部分代码的作用是什么?所以我发现了一些关于 edx、eax 寄存器的信息,但我不完全理解它是如何影响代码的。所以我理解这段代码本质上是返回 cpu 周期的当前刻度。那么,它是否将当前滴答存储到寄存器中,一部分在 hi 中,另一部分在 lo 中。而且,“=a”和“=d”是否指定将其存储在哪个寄存器中。
以及把它分成两部分有什么意义。
"rdtsc" : "=a" (lo), "=d" (hi)
上下文中的代码:
int64_t rdtsc(){
unsigned int lo,hi;
__asm__ __volatile__ ("rdtsc" : "=a" (lo), "=d" (hi));
return ((uint64_t)hi << 32) | lo;
}