mrc & mcr 与 bic & orr

/*本段代码来自朱老师物联网大讲堂icache那一节视频*/
mrc p15,0,r0,c1,c0,0;			// 读出cp15的c1到r0中
//bic r0, r0, #(1<<12)			// bit12 置0  关icache
orr r0, r0, #(1<<12)			// bit12 置1  开icache
mcr p15,0,r0,c1,c0,0;           // 将r0写入到cp15的c1中

 mrc & mcr 是协处理器cp15操作指令

 mrc用于读取CP15中的寄存器

 mcr用于写入CP15中的寄存器

 bic &  orr 是用于某些位的清零或置1

 bic 是清零指令;用于清除操作数1的某些位,并把结果放置到目的寄存器中。

 orr 是位置1指令;用于在两个操作数上进行逻辑戒运算,并把结果放置到目的寄存器中。


这四个汇编指令的格式及其解析:

MRC{cond} p15,<Opcode_1>,<Rd>,<CRn>,<CRm>,<Opcode_2>              

MCR{cond} p15,<Opcode_1>,<Rd>,<CRn>,<CRm>,<Opcode_2>

cond:为指令执行的条件码。当cond忽略时指令为无条件执行。 

Opcode_1:协处理器的特定操作码. 对于CP15寄存器来说,opcode1=0

Rd:源寄存器的ARM寄存器,其值将被传送到协处理器寄存器中,或将协处理器寄存器的值传送到该寄存器里面 ,通常为R0

CRn:目标寄存器的协处理器寄存器,其编号是C~C15。 

CRm:协处理器中附加的目标寄存器或源操作数寄存器。如果不需要设置附加信息,将CRm设置为c0,否则结果未知 

Opcode_2:可选的协处理器特定操作码。(用来区分同一个编号的不同物理寄存器,当不需要提供附加信息时,指定为0) 


BIC指令的格式为: BIC{条件}{S}  目的寄存器,操作数1,操作数2

ORR指令的格式为: ORR{条件}{S}  目的寄存器,操作数1,操作数2

操作数1应是一个寄存器, 操作数2可以是一个寄存器、被移位的寄存器、或一个立即数。

猜你喜欢

转载自blog.csdn.net/baidu_37973494/article/details/82823306