ARM学习笔记(三)

 

异常(Exceptions)
当正常的程序执流程发生暂时的停止时,称之为异常。

  处理中断请求,处理前保留现场以便处理完后返回;

   处理器允许多个异常同时发生,它们会按固定的优先级被处理。

ARM体系结构所支持的异常类型及其具体含义(按优先级从高到低):
<!--[if !supportLists]-->1.  <!--[endif]-->复位:当处理器复位电平有效时产生复位异常;

<!--[if !supportLists]-->2.  <!--[endif]-->数据中止:当处理器指令访问的数据地址不存在或不允许该指令访问时;

<!--[if !supportLists]-->3.  <!--[endif]-->FIQ:当处理器的快速中断请求引脚有效且CPSR中F位为0(为1时禁止FIQ)时;

<!--[if !supportLists]-->4.  <!--[endif]-->RIQ:当处理器的外部中断请求引脚有效且CPSR中I位为0时;

<!--[if !supportLists]-->5.  <!--[endif]-->预取中止:当处理器预取指令的地址不存在或该地址不允许当前指令访问时;

<!--[if !supportLists]-->6.  <!--[endif]-->未定义指令,SWI:当ARM处理器或协处理器遇到不能处理的指令时;

<!--[if !supportLists]-->7.  <!--[endif]-->软件中断。

对异常的响应
 

从异常返回
异常处理完后ARM处理器会执行以下两个步骤从异常返回:

<!--[if !supportLists]-->1.  <!--[endif]-->将SPSR复制到CPSR;

<!--[if !supportLists]-->2.  <!--[endif]-->将连接寄存器LR的值减去相应的偏移量后送到PC。

可以认为程序总是从复位异常处理程序开始执行的,因此复位异常处理程序不需要返回。

ARM存储器格式
ARM体系结构将存储器看成是从0地址开始的字节的线性组合;

ARM体系结构可以用两种格式存储字节数据,分别称为大端格式(big-endian)和小端格式(little-endian)。分别如下表1和表2所示:

表1 bin-endian

31
 24
 23
 16
 15
 8
 7
 0
 
字单元A(地址为A:包括地址为A、A+1、A+2、A+3的字节单元)
 
半字单元A(地址为A)
 半字单元A+2(地址为A+2)
 
字节单元A(地址为A)
 字节单元A+1
 字节单元A+2
 字节单元A+3
 

 

 

 

表2 little-endian

31
 24
 23
 16
 15
 8
 7
 0
 
字单元A(地址为A:包括地址为A、A+1、A+2、A+3的字节单元)
 
半字单元A+2(地址为A+2)
 半字单元A (地址为A)
 
字节单元A+3
 字节单元A+2
 字节单元A+1
 字节单元A
 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值