arm寄存器

来源:互联网 发布:屏蔽软件弹出广告 编辑:程序博客网 时间:2024/05/16 17:15

运行模式:1、用户模式,2、系统模式,3、特权模式,4、中止模式,5、未定义模式,6、外部中断模式,7、快速中断模式

1、通用寄存器

1)未备份寄存器R0-R7

    在所有的处理器模式下都是同一个物理寄存器,在异常中断造成处理器模式切换时,由于不同的处理器模式使用相同的物理寄存器,可能造成寄存器中数据被破坏。

    没有被系统用于特别的用途,任何可采用通用寄存器的应用场合都可以使用未备份寄存器。

2)备份寄存器R8-R14

    R8-R12每个寄存器对应于两个不同的物理寄存器。

    快速中断模式:R8_fiq,R9_fiq,R10_fiq,R11_fiq,R12_fiq

    其他模式:R8,R9,R10,R11,R12

    R11         FP     frame pointer

    R12         IP       Intra-Procedure-call scratch register         暂存SP

    R13-R14每个寄存器对应于六个不同的物理寄存器。

    用户模式、系统模式:R13,R14

    特权模式:R13_svc,R14_svc

    中止模式:R13_abt,R14_abt

    未定义模式:R13_und,R14_und

    外部中断模式:R13_irq,R14_irq

    快速中断模式:R13_fiq,R14_fiq

    R13         SP        Stack Pointer                       堆栈指针

    R14         LR        Link Register                       连接器指针

3)程序计数器PC->R15


2状态寄存器

    CPSR(当前程序状态寄存器)可以在任何处理模式下被访问。

    SPSR(备份程序状态寄存器)每一种模式下都有一个专用的物理状态寄存器。

    1)条件标志位

    位31:N(Negative)    当前指令运算结果的bit[31]的值,N=1表示运算结果为负,N=0表示运算结果为正或零

    位30:Z(Zero)        Z=1表示运算结果是0,Z=0表示运算结果不是零

    位29:C(Carry)       C=1表示有进位或借位,C=0表示无进位或借位

    位28:V(oVerflow)  V=1表示符号位溢出

    2)Q标志位

    位27:Q                   指示增强的DSP指令是否发生了溢出

    3)控制位

    位7:I                        I=1表示禁止IRQ中断

    位6:F                      F=1表示禁止FIQ中断

    位5:T                     T=0表示执行ARM指令,T=1表示执行Thumb指令

    位4-0:M                 M=10000      User

                                         10001      FIQ

                                         10010      IRQ

                                         10011      Supervisor

                                         10111      Abort

                                         11011      Undefined

                                         11111       System