ARM学习之ARM基础知识(二)

ARM寄存器组织概要

Cortex-A体系结构下有40个32-Bits长的寄存器Cortex-A多出3个寄存器:Monitor模式r13_mon,r14mon,spsr mon
在这里插入图片描述

​ARM 寄存器

​ARM 有37个32-Bits长的寄存器 :
1个PC(program counter,程序计数器)

1个CPSR(current program status register,当前程序状态字寄存器)

5个SPSR(saved program status registers,保存程序状态寄存器)

30个通用寄存器

处理器的工作模式决定操作哪组寄存器。


寄存器分组

在这里插入图片描述


Cortex-A8寄存器

Cortex-A体系结构下有40个32-Bits长的寄存器Cortex-A多出3个寄存器,Monitor模式r13_mon,r14mon,spsr mon
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190415174706597.pn在这里插入图片描述


程序状态字寄存器

在这里插入图片描述
N位:符号位,结果为负,N = 1;结果为正或零,N = 0。
Z位:指令结果为0则置1,否则置0。
C位:表示运算的进位、借位等。
V位:结果溢出标志位。
I位: I = 1,禁止IRQ中断。
F位:F = 1,禁止FIQ中断。
T位:状态控制位,T = 0,32位ARM指令状态。T = 1,16位Thumb指令状态。
M[4:0]:处理器工作模式控制位在这里插入图片描述


程序计数器(PC)

处理器工作在ARM状态:
所有指令32bits宽
所有指令必须word对齐
所以pc值由bits[31:2]决定,bits[1:0]未定义(所以指令不能halfword/byte对齐).

处理器工作在Thumb状态:
所有指令16bits宽
所有指令必须halfword对齐
所以pc值由bits[31:1]决定,bits[0]未定义(所以指令不能byte对齐).

处理器工作在Jazelle状态:
所有指令8bits宽
处理器执行word存取一次取4条指令


ARM内核异常处理过程

异常产生时:
1、拷贝CPSR到SPSR_
2、设置适当的CPSR位
(1)改变处理器状态进入ARM态
(2) 改变处理器模式进入相应的异常模式
(3)设置禁止位禁止相应的中断(如果需要)
3、保存返回地址到LR_
4、设置PC为相应的异常向量

异常处理完返回:
1、从SPSR_恢复CPSR
2、从LR_恢复PC

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

欲盖弥彰1314

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值