我正在玩一些C参考代码,它带有自己的基准测试程序。不幸的是,基准测试代码有一行内联x86程序集,我正在尝试在AArch64 ARMv8系统上编译它(如果有帮助,可以使用Raspberry Pi 3)。
从上下文中我发现所有x86程序集都是报告时钟周期。我在ARM处理器文档中挖掘并发现我应该轮询CNTPCT_EL0系统寄存器,并写了以下内容:
unsigned long long result;
asm volatile ("mrs %0, cntpct_el0" : "=r" (result));
但是,我从汇编程序中收到以下错误:
Error: selected processor does not support requested special purpose register -- `mrs r0,cntpct_el0'
到目前为止,我已经尝试更改gcc标志(-mcpu和-march上的变体),显式地将目标寄存器设置为64位,甚至更新binutils。我错过了什么?