ARM 汇编中的这一行是做什么的?
mrc p15, 0, %0, c9, c13, 0" : : "r" (counter)
是什么p15
?通常寄存器以r
in为前缀r15
。
符号是::
什么,角色是什么c9, c1
?
ARM 汇编中的这一行是做什么的?
mrc p15, 0, %0, c9, c13, 0" : : "r" (counter)
是什么p15
?通常寄存器以r
in为前缀r15
。
符号是::
什么,角色是什么c9, c1
?
虽然MRC
是通用协处理器互操作指令, cp15
但控制处理器是所有现代 ARM CPU 都具有的,并且已被 ARM 用于扩展片上单元(如高速缓存、MMU、性能监控等等。
一次接受你的指导:
mrc p15, 0, %0, c9, c13, 0" : : "r" (counter)
根据ARM Cortex A7 MPCore Reference,指令格式为:
MRC{cond} P15, <Opcode_1>, <Rd>, <CRn>, <CRm>, <Opcode_2>
在第 4-11 页上,这被描述为将 CPU 寄存器传输到性能监视器计数寄存器(我猜count=0
这是性能计数器的重置)。
至于内联汇编的语法。请参阅此以获取 x86 概述 - 这可能类似于 ARM。
该: : "r" (counter)
指令具有以下含义:
counter
,并且该寄存器应用作%0
。手臂中的协处理器可能比其他处理器更明显/可见。尽管如此,这是一个协处理器访问函数,协处理器接口是通用的,这些指令是通用的,就好像您只是在通用总线上填写项目一样。现在 arm 确实重用了一些东西,因为一个内核中的协处理器寄存器如果存在于另一个内核中,则更有可能不相关或相同。正确的答案是访问 arm 网站 (infocenter.arm.com) 并找到您正在使用的处理器系列和内核的 arm arm(arm 架构参考手册)和 trm(技术参考手册)或查看代码因为,在一本或两本手册中,它将有一个关于协处理器的部分,当您进入该部分时,您将看到协处理器编号,然后在该协处理器中注册,其中一些编号将是有意义的。ARM 通常会说,在这里读取这个寄存器是确切的指令,在这里写这个寄存器是确切的指令,它会采用您提供的形式。如果您希望从代码倒退到它的作用,您会发现您可以非常快速地进入手册的该部分并快速找到说明,然后查看它对特定核心或系列的作用。另一种方法是查看章节标题,找到感兴趣的寄存器,然后查看用于操作它的指令的语法。如果您希望从代码倒退到它的作用,您会发现您可以非常快速地进入手册的该部分并快速找到说明,然后查看它对特定核心或系列的作用。另一种方法是查看章节标题,找到感兴趣的寄存器,然后查看用于操作它的指令的语法。如果您希望从代码倒退到它的作用,您会发现您可以非常快速地进入手册的该部分并快速找到说明,然后查看它对特定核心或系列的作用。另一种方法是查看章节标题,找到感兴趣的寄存器,然后查看用于操作它的指令的语法。
至于 :: 双冒号,我猜你是从内联汇编中得到的,这与内联汇编有关,编译器的东西,与 arm 指令完全无关,arm 指令以 c13, 0 结尾。