对于我的项目, 我必须使用内联汇编指令 (如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处理器上编写类似于上面的内联汇编代码 (计算指令的执行经过时间)?
您应该读取协处理器p15
的PMCCNTR
寄存器(不是实际的协处理器,只是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