在ARM处理器中,只有MRS(Move to Register from State register)指令可以对状态寄存器CPSR和SPSR进行读操作。通过读CPSR可以获得当前处理器的工作状态。读SPSR寄存器可以获得进入异常前的处理器状态(因为只有异常模式下有SPSR寄存器)。
MRS R1,CPSR ; 将CPSR状态寄存器读取,保存到R1中 MRS R2,SPSR ; 将SPSR状态寄存器读取,保存到R2中
BIC(bit clean)指令对 r0 中的值 和#0x1f 值的反码按位进行逻辑“与”运算。
orr是逻辑或。
msr 写状态寄存器指令。在ARM 处理器中。只有MSR 指令可以直接设置状态寄存器CPSR或SPSR。
关注后8位,可以看到,低5位是一个特殊状态,标识CPU模式,第6位是Thumb或者ARM指令状态,第七位是FIQ,第八位是IRQ。
11*,10011表示CPU位管理模式,FIQ和IRQ中断禁止,可能是Thumb指令,也可以是ARM指令。