标签:指令 round 标志位 目标 条件 函数 mrc pre 附加
一、LDR(Load Register 加载寄存器)将存储器地址所指地址处连续的4个字节(1个字)的数据传送到目的寄存器中。
例:
/* 将Reset_Handler函数的地址加载到pc寄存器中 */
ldr pc, =Reset_Handler
/* 将Reset_Handler函数的地址加载到r0寄存器中*/
ldr r0, =Reset_Handler
二、BX(Branch and Exchange 分支和交换)指令跳转到指令中所指定的目标地址,若目标地址的bit[0]为0,则跳转时自动将CPSR中的标志位T复位,即把目标地址的代码解释为ARM代码;若目标地址的bit[0]为1,则跳转时自动将CPSR中的标志位T置位,即把目标地址的代码解释为Thumb代码。
例:
/* 以下指令的作用是在函数Reset_Handler中一直循环 */
Reset_Handler:
ldr r0, =Reset_Handler
bx r0
三、MRC读CP15(C0-C15)寄存器
MRC{cond} p15, <opc1>, <Rt>, <CRn>, <CRm>, <opc2>
例:
MRC p15, 0, r0, c0, c0, 0 ;将 CP15 中 C0 寄存器的值读取到 R0 寄存器中
四、MCR写CP15(C0-C15)寄存器
MCR{cond} p15, <opc1>, <Rt>, <CRn>, <CRm>, <opc2>
同上。
例:
ldr r0, =0X87800000 ; r0=0X87800000 MCR p15, 0, r0, c12, c0, 0 ;将 r0 里面的数据写入到 c12 中,即 c12=0X87800000
五、 ADD(add 加)不带进位的加法指令,指令完成目的操作数与源操作数相加,将结果存回目标操作数。
例:
MRC p15, 4, r1, c15, c0, 0 ;获取 GIC 基地址 ADD r1, r1, #0X2000 ;GIC 基地址加 0X2000 得到 CPU 接口端寄存器起始地址 LDR r0, [r1, #0XC] ;读取 CPU 接口端起始地址+0XC 处的寄存器值,也就是寄存器
;GIC_IAR 的值
标签:指令 round 标志位 目标 条件 函数 mrc pre 附加
原文地址:https://www.cnblogs.com/wenhao-Web/p/12686452.html