答案 0 :(得分:0)
我认为文档回答了这个问题。您可能拥有为x86-64构建的x86代码。 A对x86有效,但对x86-64无效。 GCC documentation解释了如何用for x86-64替换A:
“这在x86-64上不正确,因为它会在ax或dx中分配tick。你必须使用以下变体:”
unsigned long long rdtsc (void)
{
unsigned int tickl, tickh;
__asm__ __volatile__("rdtsc":"=a"(tickl),"=d"(tickh));
return ((unsigned long long)tickh << 32)|tickl;
}