msr cpsr_cxsf,r1;這里的cxsf表示從低到高分別占用的4個(gè)8bit的數(shù)據(jù)域指令中有時(shí)還有出現(xiàn)cpsr_cf, cpsr_all, cpsr_c等,這里:
本文引用地址:http://butianyuan.cn/article/201611/316969.htmc 指CPSR中的control field ( PSR[7:0])
f 指flag field (PSR[31:24])
x 指extend field (PSR[15:8])
s 指status field ( PSR[23:16])
其中cpsr的位表示為:
31 30 29 28---76-43210
NZCVIFM4M3M2M1M0
000 00User26 模式
000 01FIQ26 模式
000 10IRQ26 模式
000 11SVC26 模式
10000User 模式
10001FIQ 模式
10010IRQ 模式
10011SVC 模式
10111ABT 模式
1101 1UND 模式
深入分析:
對(duì)于MSR(寄存器到狀態(tài)寄存器)的指令,
MSR CPSR,r0
MSR CPSR_all,r0
MSR CPSR_flg,r0
都是已經(jīng)過(guò)時(shí)的表示方法。
對(duì)于MRS(狀態(tài)寄存器到寄存器)的指令,
MRS R0,CPSR等同于MRS R0, CPSR_cxsf
MRS R0,CPSR_all 會(huì)有waring
MRS R0,CPSR_flg會(huì)有錯(cuò)誤
在ADS中使用c,f,x,s表示cpsr的各個(gè)部分是推薦的。從指令來(lái)說(shuō):
MSR CPSR_f,r0機(jī)器碼為0xe128f000
MSR CPSR_c,r0機(jī)器碼為0xe121f000
MSR CPSR_x,r0機(jī)器碼為0xe122f000
MSR CPSR_s,r0機(jī)器碼為0xe124f000
可見(jiàn)機(jī)器碼中用bit[29:16]4bit表示是f,c,x,s的。所以能夠在機(jī)器執(zhí)行的時(shí)候,
給予不同的執(zhí)行結(jié)果。為了代碼向后兼容性,建議使用f,c,x,s尾綴
評(píng)論