協(xié)處理器及其他指令之:狀態(tài)寄存器訪問指令
4.指令的使用
詳見MRS指令。
5.指令舉例
(1)使用“讀-修改-寫”模式更新CPSR寄存器。
MRSr0,CPSR ;讀CPSR寄存器的值
BICr0,r0,#0xf0000000 ;清除N、Z、C、V位
MSRCPSR_f,r0 ;更新CPSR中的標志位
注意 | 因為PSR狀態(tài)寄存器中存在目前沒有定義的保留位,所以在使用時,最好加上“_fsxc”后綴,如上例中的“CPSR_f”。這樣做的目的是使指令只修改程序狀態(tài)寄存器的某個域,防止程序向高版本指令集移植時發(fā)生意外。 |
(2)禁止IRQ中斷。
MRSr0,CPSR;讀CPSR狀態(tài)寄存器
ORRr0,r0,#0x80;設置IRQ中斷禁止位
MSRCPSR_c,r0;更新CPSR狀態(tài)寄存器
(3)堆棧初始化。
INITSTACK
MOVr0,LR;保存返回地址
;設置管理模式堆棧
MSRCPSR_c,#0xd3;
LDRSP,StackSvc;
;設置中斷模式堆棧
MSRCPSR_c,#0xd2;
LDRSP,StackIrq;
評論