ARM学习笔记(三)

ARM 144浏览

异常(Exceptions)

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

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

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

ARM体系结构所支持的异常类型及其具体含义(按优先级从高到低)

1.  复位:当处理器复位电平有效时产生复位异常;

2.  数据中止:当处理器指令访问的数据地址不存在或不允许该指令访问时;

3.  FIQ:当处理器的快速中断请求引脚有效且CPSRF位为0(为1时禁止FIQ)时;

4.  RIQ:当处理器的外部中断请求引脚有效且CPSRI位为0时;

5.  预取中止:当处理器预取指令的地址不存在或该地址不允许当前指令访问时;

6.  未定义指令,SWI:当ARM处理器或协处理器遇到不能处理的指令时;

7.  软件中断。

对异常的响应

 

从异常返回

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

1.  SPSR复制到CPSR

2.  将连接寄存器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:包括地址为AA+1A+2A+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:包括地址为AA+1A+2A+3的字节单元)

半字单元A+2(地址为A+2)

半字单元A (地址为A)

字节单元A+3

字节单元A+2

字节单元A+1

字节单元A