使用内联ARM程序集检索时钟周期

时间:2016-08-12 21:29:11

标签: c arm inline-assembly arm64 armv8

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

0 个答案:

没有答案