c/c++语言开发共享在ARM中是否有与rdtsc等效的指令?

对于我的项目, 我必须使用内联汇编指令 (如rdtsc)来计算某些C / C ++指令的执行时间。

以下代码似乎适用于英特尔,但不适用于ARM处理器:

{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; 

我的问题是:

如何在ARM处理器上编写类似于上面内联汇编代码 (计算指令的执行经过时间)?

    您应该读取协处理器p15PMCCNTR寄存器(不是实际的协处理器,只是CPUfunction的入口点)以获得循环计数。 请注意,只有在以下情况下,它才适用于非特权应用:

    这是它如何完成的真实例子 。

    需要了解更多c/c++开发分享在ARM中是否有与rdtsc等效的指令?,也可以关注C/ C++技术分享栏目—计算机技术网(www.ctvol.com)!

      以上就是c/c++开发分享在ARM中是否有与rdtsc等效的指令?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/979168.html

      (0)
      上一篇 2021年12月12日
      下一篇 2021年12月12日

      精彩推荐