以下代码中“asm”中的“不可能约束”错误的原因

时间:2017-10-09 05:25:28

标签: gcc compiler-errors

是否有人可以帮我确定以下编译器错误的原因。

.. \ TestRT \ TDP \ PPCGNU \ lib \ custom.h:428:错误:'asm'中不可能的约束

代码: enter image description here

提前致谢!

1 个答案:

答案 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;
}