CPSR

msr cpsr_cxsf,r1 ;这里的cxsf表示从低到高分别占用的4个8bit的数据域 指令中有时还有出现cpsr_cf, cpsr_all, cpsr_c等，这里：

c 指 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 --- 7 6 - 4 3 2 1 0 N Z C V I F M4 M3 M2 M1 M0

0 0 0 0 0 User26 模式 0 0 0 0 1 FIQ26 模式 0 0 0 1 0 IRQ26 模式 0 0 0 1 1 SVC26 模式 1 0 0 0 0 User 模式 1 0 0 0 1 FIQ 模式 1 0 0 1 0 IRQ 模式 1 0 0 1 1 SVC 模式 1 0 1 1 1 ABT 模式 1 1 0 1 1 UND 模式 1 1 1 1 1 system模式

深入分析： 对于MSR（寄存器到状态寄存器）的指令， MSR CPSR, r0 MSR CPSR_all, r0 MSR CPSR_flg, r0 都是已经过时的表示方法. 对于MRS（状态寄存器到寄存器）的指令， MRS R0, CPSR 等同于MRS R0, CPSR_cxsf MRS R0, CPSR_all 会有waring MRS R0, CPSR_flg 会有错误 在ADS中使用c,f,x,s表示cpsr的各个部分是推荐的. 从指令来说： MSR CPSR_f, r0 机器码为0xe128f000 MSR CPSR_c, r0 机器码为0xe121f000 MSR CPSR_x, r0 机器码为0xe122f000 MSR CPSR_s, r0 机器码为0xe124f000 可见机器码中用bit[29:16]4bit表示是f,c,x,s的. 所以能够在机器执行的时候， 给予不同的执行结果. 为了代码向后兼容性，建议使用f,c,x,s尾缀.

from