协处理器及其他指令之:状态寄存器访问指令
4.指令的使用
详见MRS指令。
5.指令举例
(1)使用“读-修改-写”模式更新CPSR寄存器。
MRSr0,CPSR ;读CPSR寄存器的值
BICr0,r0,#0xf0000000 ;清除N、Z、C、V位
MSRCPSR_f,r0 ;更新CPSR中的标志位
注意 | 因为PSR状态寄存器中存在目前没有定义的保留位,所以在使用时,最好加上“_fsxc”后缀,如上例中的“CPSR_f”。这样做的目的是使指令只修改程序状态寄存器的某个域,防止程序向高版本指令集移植时发生意外。 |
(2)禁止IRQ中断。
MRSr0,CPSR;读CPSR状态寄存器
ORRr0,r0,#0x80;设置IRQ中断禁止位
MSRCPSR_c,r0;更新CPSR状态寄存器
(3)堆栈初始化。
INITSTACK
MOVr0,LR;保存返回地址
;设置管理模式堆栈
MSRCPSR_c,#0xd3;
LDRSP,StackSvc;
;设置中断模式堆栈
MSRCPSR_c,#0xd2;
LDRSP,StackIrq;
评论