CPSR寄存器

 

    众所周知,ARM每种工作模式除R0~R15共16个寄存器外,还有第17个寄存器CPSR,叫做 当前程序状态寄存器,CPSR中一些位被用于标识各种状态,一些位被用于标识当前出于什么工作模式

    其中cpsr_c代表的是这32位中的低8位,也就是控制位
    当你看到有些程序里这样写
    msr cpsr_c 0xd2                                       //msr是arm汇编中专门用来修改cpsr这样有特定功能的寄存器的指令

                                                                      //具体请参考Arm汇编手册和Arm体系架构手册

    这样的语句时,就是在更改这8位的状态

M控制位控制处理器模式,具体含义如下:

M[4:0] 处理器模式 可访问的寄存器

ob10000 user pc,r14~r0,CPSR

0b10001 FIQ PC,R14_FIQ-R8_FIQ,R7~R0,CPSR,SPSR_FIQ

0b10010 IRQ PC,R14_IRQ-R13_IRQ,R12~R0,CPSR,SPSR_IRQ

0B10011 SUPERVISOR PC,R14_SVC-R13_SVC,R12~R0,CPSR,SPSR_SVC

0b10111 ABORT PC,R14_ABT-R13_ABT,R12~R0,CPSR,SPSR_ABT

0b11011 UNDEFINEED PC,R14_UND-R8_UND,R12~R0,CPSR,SPSR_UND

0b11111 SYSTEM PC,R14-R0,CPSR(ARM V4以及更高版本)

posted on 2014-12-08 13:36  辣子YY  阅读(907)  评论(0编辑  收藏  举报

导航