ARM体系结构知识点
据栈中,入栈的顺序与参数的顺序相反,即最后一个参数先入栈。
在子程序中用R4~R11来保存局部变量,这时,R4~R11可以记作V1~V8;而在Thumb程序中,通常只能使用寄存器R4~R7。
寄存器R12用作子程序间的scratch寄存器,记作ip,在子程序间的连接代码中常有这种使用规则
三、异常
当正常的程序执行流程发生暂时的停止时,称之为异常,例如处理一个外部的中断请求。在处理异常之前,当前处理器的状态必须保留,这样当异常处理完成之后,当前程序可以继续执行。处理器允许多个异常同时发生,它们将会按固定的优先级进行处理。
当一个异常出现以后,ARM微处理器会执行以下几步操作
1.将下一条指令的地址存入相应连接寄存器LR,以便程序在处理异常返回时能从正确的位置重新开始执行。
2.将CPSR复制到相应的SPSR中。
3.根据异常类型,强制设置CPSR的运行模式位。
4.强制PC从相关的异常向量地址取下一条指令执行,从而跳转到相应的异常处理程序处。
ARM体系结构所支持的异常类型
1.复位:复位电平有效时,产生复位异常,程序跳转到复位处理程序处执行
2.未定义指令:遇到不能处理的指令,定义未定义指令异常
3.软件中断:执行SWI指令产生,用于用户模式下的程序调用特权指令
4.指令预取中止:处理器预取指令的地址不存在,或该地址不允许当前指令访问
5.数据中止:处理器数据访问指令的地址不存在,或该地址不允许当前指令访问
6.IRQ:外部中断请求有效,且CPSR中的I位为0时,产生IRQ异常
7.FIQ:快速中断请求引脚有效,且CPSR的F位为0时,产生FIQ异常
ARM体系中断向量表
优先级
地址
异常原因
进入模式
1
0x0000,0000
复位
管理模式
6
0x0000,0004
未定义指令
未定义模式
6
0x0000,0008
软件中断
管理模式
5
0x0000,000C
中止(预取指令错误)
中止模式
2
0x0000,0010
中止(预取数据错误)
中止模式
0x0000,0014
保留
保留
4
0x0000,0018
IRQ(外部中断,且I允许)
IRQ
3
0x0000,001C
FIQ(外部中断,且F允许)
FIQ
ARM体系结构知识 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)