MRS/MSR
MRS
功能:将状态寄存器的内容传送至通用寄存器。
MRS{<条件码> Rd,CPSR}SPSR
例子:
MRS R0,CPSR //将CPSR的内容传送到R0
MRS 目的寄存器 源寄存器
MSR(state->reg)
功能: 将通用寄存器的内容传送至状态寄存器。
MSR CPSR_c,R0 //将R0中内容传送到CPSR_c。
MSR 源寄存器 目的寄存器
tbz/tbnz
tbz
tbz branch zeo. 测试位为0,则跳转。
tbz w24, #0x6, 0x19307005c ; 即w24第6位,若为0,则跳转到0x19307005c执行
tbnz
test branch no zero. 测试位不为0,则跳转。
tbnz w24, #0x6, 0x19307005c ; 即w24第6位,若不为0,则跳转到0x19307005c执行
CBNZ
CBNZ ,
CBZ指令
CBZ ,
PSTATE
PSATE有下面字段:
专用寄存器 | 说明 |
---|---|
CurrentEL | 存放当前的异常级别 |
DAIF | 指定当前的中断屏蔽位 |
NZCV | 保持条件标志 |
SPSel | 在EL1或更高版本中,在当前异常级别的选择 |
操作指令
操作数 | PSTATE字段 | 注意 |
---|---|---|
DAISet | D,A,I,F | 将PSATE.{D,A,I,F}位设置为1 |
DAIClr | D,A,I,F | 将PSATE.{D,A,I,F}位设置为0 |
SPSel | SP | 将PSATE.SP设置为1或0 |
BIC/ORR/EOR
bic指令的格式为:
bic{条件}{S} Rd,Rn,operand
bic指令将Rn 的值与操作数operand2 的反码按位逻辑”与”,结果存放到目的寄存器Rd 中。
bic R0,R0,#0x1F ; //将R0最低5位清零,其余位不变
str/ldr
str: 把寄存器的值加载到指定地址
str r1,[r2] ;将r1中的值存到r2所指定的地址中
str r1,[r2,#4];将r1中的值存到r2+4所指定的地址中
str r1,[r2],#4; 将r1中的值存到r2所指定的地址中,同时r2=r2+4
ldr: 把指定内存的值加载到寄存器中。