Chinaunix首页 | 论坛 | 博客
  • 博客访问: 193688
  • 博文数量: 20
  • 博客积分: 45
  • 博客等级: 民兵
  • 技术积分: 346
  • 用 户 组: 普通用户
  • 注册时间: 2012-12-23 14:37
文章分类
文章存档

2016年(2)

2015年(3)

2014年(11)

2013年(4)

我的朋友

分类: LINUX

2014-07-23 13:02:37

User
System
Supervisor
Abort
Undefined
IRQ
FIQ
R0
R0
R0
R0
R0
R0
R0
R1
R1
R1
R1
R1
R1
R1
R2
R2
R2
R2
R2
R2
R2
R3
R3
R3
R3
R3
R3
R3
R4
R4
R4
R4
R4
R4
R4
R5
R5
R5
R5
R5
R5
R5
R6
R6
R6
R6
R6
R6
R6
R7
R7
R7
R7
R7
R7
R7
R8
R8
R8
R8
R8
R8
R8_fiq
R9
R9
R9
R9
R9
R9
R9_fiq
R10
R10
R10
R10
R10
R10
R10_fiq
R11
R11
R11
R11
R11
R11
R11_fiq
R12
R12
R12
R12
R12
R12
R12_fiq
R13
R13
R13_svc
R13_abt
R13_und
R13_irq
R13_fiq
R14
R14
R14_svc
R14_abt
R14_und
R14_irq
R14_fiq
PC
PC
PC
PC
PC
PC
PC
CPSR
CPSR
CPSR
CPSR
CPSR
CPSR
CPSR


SPSR_svc
SPSR_abt
SPSR_und
SPSR_irq
SPSR_fiq
    会来看这篇博文肯定对ARM寄存器有一定的了解,一些基础的东西我就不说啦。
     ARM处理器总共有37个寄存器,31(通用寄存器)+6(状态寄存器)
其中名字相同的寄存器物理上就是同一个寄存器,所以共有37个寄存器。
a,未备份寄存器:R0~R7
     对每个未备份寄存器来说,在所有的模式下都是指同一个物理寄存器(即上面名字相同)。在异常程序中断造成模式切换是,由于不同模式使用的是相同的物理寄存器。这可能导致数据遭到破坏。未备份寄存器没有被系统作为别的用途,任何场合均可采用未备份寄存器。
b,备份寄存器:R8~R14
     对于R8~R12来说,除了FIQ模式下其他模式均使用相同的物理寄存器。在FIQ模式下R8FIQ~R12FIQ有自己的物理寄存器。
     对于R13和R14寄存器,每种模式都有自己的物理寄存器,当异常中断发生时,系统使用相应模式下的物理寄存器,从而可以避免数据遭到破坏。
     R13也称为SP堆栈指针。
     R14也称为LR寄存器。
c,程序计数器:PC
     PC寄存器存储指令地址,由于ARM采用流水机制执行指令,故PC寄存器总是存储下一条指令的地址。由于ARM是按照字对齐,故PC被读取后的值的bit[1:0]总是0(Thumb的bit[0]总是0)。

程序状态寄存器见上一篇的CPSR寄存器分析
SPSR的结构与CPSR的结构相同,SPSR是用来备份CPSR的。




阅读(1948) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~