ARM处理器中的寄存器

ARM处理器中的寄存器可分为通用寄存器和专用寄存器两种,寄存器R0-R12属于通用寄存器,除了FIQ工作模式,在其他工作模式下这些寄存器都是公用的,共享的;R0-R3 通常用来传递函数参数,R4-R11用来保存程序运算的中间结果或者函数的局部变量等,R12常用来作为函数调用过程中的临时寄存器,ARM处理器有多种工作模式,除了这些各个模式下通用的寄存器,还有一些寄存器在各自的工作模式下独立存在的,如R13,R14,R15 CPSP,SPSR寄存器,在每个急促你模式下都有自己单独的寄存器。R13寄存器又称为堆栈指针寄存器(Stack Pointer SP),用来维护和管理函数调用过程中的栈帧变化,R13总是指向当前正在运行的函数栈帧,一般不能再用做其他用途。R14 寄存器又称为链接寄存器,在函数调用过程中主要用来保存上一级函数调用者的返回地址,寄存器R15又称为程序计数器,CPU从内存取指令执行,就是默认从PC保存的地址中取的,每取一次指令,PC寄存器的地址值自动增加,CPU一条条不停的取指令,程序也就源源不断的一直运行下去,在ARM三级流水线中,PC指针的值等于当前正在运行的指令地址+8,后续的32位处理器虽然流水线的级数不断增加,但是为了简化编程,PC这孩子很的值继续延续了这种计算方式。

    当前处理器状态寄存器主要用来表征当前处理器的运行状态,除了各种状态位,标识位,CPSR寄存器里也有一些控制位,用来切换处理器的工作模式和中断使能控制,CPSR寄存器各个标识位,控制位的详细说明如图3-2所示

N

N=1表示运算结果为负数,N=0表示结果为正数或者0

T 控制位

0 arm指令

1 Thumb指令

Z

Z=1运算结果为零,Z=0运算结果不为零,对于CMP指令,Z=1表示进行比较两个数相等

M4=1

禁止FIQ中断

C

Carry Borrow Extend

M3

V

V=1 表示符号为溢出

M2

I

I=1时,禁止IRQ中断

M1

F

F=1时,禁止FIQ中断

M0

在每种工作模式下,都有一个单独的程序状态保存寄存器(saved processor state register SPSR)。当ARM处理器切换工作模式或者发生异常时,SPSR用来保存当前工作模式下的处理器现场,即将CPSR寄存器的值保存到当前当前工作模式下的SPSR 寄存器。当ARM处理器从异常返回时,就可以从SPSR寄存器中恢复原线的处理器状态,切换到原来的工作模式继续进行。

在ARM所有的工作模式中,有一种工作模式比较特殊,即FIQ模式,位了快速响应中断,减少中断现场保护带来的时间开销,在FIQ工作模式下,ARM处理器又自己独特的R8-R12寄存器,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值