3

我正在玩一些 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。我错过了什么?

4

0 回答 0