汇编指令MCR/MRC

  • Post author:
  • Post category:其他


MCR指令将ARM处理器的寄存器中的值传到协处理器的寄存器中去

这里用CP15协处理器来作为例子

MCR{cond} p15, <opc1, <Rt, <CRn, <CRm, <opc2

【cond】命令

opc1: 协处理器执行的操作码

Rt : 要读取的ARM源处理器的寄存器

CRn :要写入的协处理器的寄存器

CRm:协处理器中附加的目标寄存器或者源操作数寄存器,如果不需要附加信息就将CRm 设置为 C0,否则结果不可预测。

Cortex-A7中,CP15协处理器的c12

在这里插入图片描述

ldr r0 ,=0x87800000	;写偏移地址
MCR p15,0,r0,c12,c0,0 ;ARM源处理器寄存器r0的值写入协处理器CP15寄存器c12的目标寄存器c0中。
/*
因为CP15寄存器c12的目标寄存器c0对应的是矢量基地址寄存器,所以对其操作就是设置偏移地址
*/

MRC指令将协处理器寄存器中的值传到ARM处理器的寄存器中去

MRC{cond} p15, <opc1, <Rt, <CRn, <CRm, <opc2

【cond】命令

opc1: 协处理器执行的操作码

Rt : 要写入的ARM源处理器的寄存器

CRn : 要读取的协处理器的寄存器

CRm:协处理器中附加的目标寄存器或者源操作数寄存器,如果不需要附加信息就将CRm 设置为 C0,否则结果不可预测。

在这里插入图片描述

MRC p15, 4, Rt, c15, c0, 0; Read Configuration Base Address Register

MRC p15,4,r0,c15,c0,0	;获取CBAR中的值到ARM源处理器寄存器r0中
ADD r0,r0,#0x2000		;GIC及地址加0x2000得到CPU接口端寄存器起始地址



版权声明:本文为weixin_48062060原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。