ARM汇编指令-协处理器cp15操作指令(mcr & mrc)

一、协处理器

SoC内部另一处理核心,协助主CPU实现某些功能,被主CPU调用执行一定任务。ARM设计上支持多达16个协处理器,但是一般

SoC只实现其中的CP15.(cp:coprocessor)

协处理器和MMU、cache、TLB等处理有关,功能上和操作系统的虚拟地址映射、cache管理等有关。

二、CP15协处理器简介

CPl5包含l6个32位寄存器,其编号为0~15。

CPl5中的寄存器可能是只读的,也可能是只写的,还有一些是可读可写的。在对协处理器寄存器进行操作时,需要注意以下几个问题:

1.寄存器的访问类型(只读/只写/可读可写)。

2.不同的访问引发的不同功能。

3.相同编号的寄存器是否对应不同的物理寄存器。

4.寄存器的具体作用。

关于详细介绍请看以下博文

https://blog.csdn.net/gameit/article/details/13169405

https://wenku.baidu.com/view/2a74c5a90029bd64783e2cb4.html

三、协处理器cp15操作指令(mcr & mrc)

MCR:将ARM寄存器的值写入CPl5寄存器中;

MRC:将CPl5寄存器的值写入ARM寄存器中。

MCR{<cond>}   p15,  <opcode1=0>, <Rd>, <Crn>, <CRm> {, <opcode2>}

MRC{<cond>}   p15,  <opcode1=0>, <Rd>, <Crn>, <CRm> {, <opcode2>}

opcode_1:对于cp15永远为0

Rd:ARM的普通寄存器

Crn:cp15的寄存器,合法值是c0~c15

Crm:cp15的寄存器,一般均设为c0

opcode_2:一般省略或为0(具体看第二篇博文)


使用举例:

mrc p15, 0, r0, c1, c0, 0   其实就是把C1里面的值读到R0

orr r0, r0, #1

mcr p15, 0, r0, c1, c0, 0   R0再 写回去C1



  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值