对于我的项目,我必须使用内联汇编指令,例如 rdtsc 来计算stack中Android 4.3 C ++指令的执行时间。我在stackoverflow中发现了类似的问题,例如1,2,3,4,5,6,7, 8,9,10,但没有解决我遇到的问题。
我使用了以下代码:
{unsigned a, d;asm volatile("rdtsc" : "=a" (a), "=d" (d)); t0 = ((unsigned long)a) | (((unsigned long)d) << 32);}
//The C++ statement to measure its execution time
{unsigned a, d;asm volatile("rdtsc" : "=a" (a), "=d" (d)); t1 = ((unsigned long)a) | (((unsigned long)d) << 32);}
time = (t1-t0)/2-20;
但我收到错误消息:
错误:asm&#39;
中的不可能约束我的构建环境是:
我已经在独立的C程序(在相同的环境中)中尝试了上面的代码,它运行正常没问题但是一旦我将上面的代码嵌入到Android源代码中,我得到了错误信息。
我的目标:
我在x86_64-linux-gnu平台上为Android模拟器qemu构建图像。