ARM体系结构与编程(第2版)第9章.ppt

  1. 1、本文档共27页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ARM体系结构与编程(第2版)第9章课件

在ARM体系中,通常有以下3种方式来控制程序的执行流程: 在正常程序执行过程中,每执行一条ARM指令,程序计数器(PC)的值加4个字节;每执行一条Thumb指令,程序计数器(PC)的值加两个字节。整个过程是顺序执行的。 通过跳转指令,程序可以跳转到特定的地址标号处执行,或者跳转到特定的子程序处执行。 当异常中断发生时,系统执行完当前指令后,将跳转到相应的异常中断处理程序处执行。 * 9.1.1 ARM体系中的异常中断种类 ARM体系中的异常中断如表9.1所示。 * 9.1.1 ARM体系中的异常中断种类 * 9.1.2 异常中断向量表及异常中断优先级 中断向量表中指定了各异常中断及其处理程序的对应关系。它通常存放在存储地址的低端。在ARM体系中,异常中断向量表的大小为32字节。 每个异常中断对应的中断向量表中的4个字节的空间中存放了一个跳转指令或者一个向程序计数器(PC)中赋值的数据访问指令。通过这两种指令,程序将跳转到相应的异常中断处理程序处执行。 当几个异常中断同时发生时,就必须按照一定的次序来处理这些异常中断。 处理器执行某个特定的异常中断的过程中,称为处理器处于特定的中断模式。 * 9.1.2 异常中断向量表及异常中断优先级 各异常中断的中断向量地址以及中断的处理优先级如表9.2所示。 * 中断向量地址 异常中断类型 异常中断模式 优先级(6最低) 0x0 复位 特权模式(SVC) 1 0x4 未定义的指令 未定义指令中止模式(Undef) 6 0x8 软件中断(SWI) 特权模式(SVC) 6 0x0c 指令预取中止 中止模式 5 0x10 数据访问中止 中止模式 2 0x14 保留 未使用 未使用 0x18 外部中断请求(IRQ) 外部中断(IRQ)模式 4 0x1c 快速中断请求(FIQ) 快速(FIQ)中断模式 3 9.1.3 异常中断使用的寄存器 各异常中断对应着一定的处理器模式。应用程序通常运行在用户模式下。ARM中的处理器模式如表9.3所示。 * 处理器模式 描 述 用户模式(User, usr) 正常程序执行的模式 快速中断模式(FIQ, fiq) 用于高速数据传输和通道处理 外部中断模式(IRQ, irq) 用于通常的中断处理 特权模式(Supervisor, sve) 供操作系统使用的一种保护模式 中止模式(Abort, abt) 用于虚拟存储及存储保护 未定义指令模式(Undefined, und) 用于支持通过软件仿真硬件的协处理器 系统模式(System, sys) 用于运行特权级的操作系统任务 9.1.3 异常中断使用的寄存器 各种不同的处理器模式可能有对应于该处理器模式的物理寄存器组,如表9.4所示。 * 9.2 进入和退出异常中断的过程 本节主要介绍处理器对于各种异常中断的响应过程以及从异常中断处理程序中返回的方法。对于不同的异常中断处理程序,返回地址以及使用的指令是不同的。 * 9.2.1 ARM处理器对异常中断的响应过程 ARM处理器对异常中断的响应过程如下。 (1) 保存处理器当前状态、中断屏蔽位以及各条件标志位。 (2) 设置当前程序状态寄存器CPSR中相应的位。 (3) 将寄存器lr_mode设置成返回地址。 (4) 将程序计数器值(PC)设置成该异常中断的中断向量地址,从而跳转到相应的异常中断处理程序处执行。 * 9.2.1 ARM处理器对异常中断的响应过程 1. 响应复位异常中断 2. 响应未定义指令异常中断 3. 响应SWI异常中断 4. 响应指令预取中止异常中断 5. 响应数据访问中止异常中断 6. 响应IRQ异常中断 7. 响应FIQ异常中断 * 9.2.2 从异常中断处理程序中返回 从异常中断处理程序中返回包括下面两个基本操作: 恢复被中断的程序的处理器状态,即把SPSR_mode寄存器内容复制到当前程序状态寄存器CPSR中。 返回到发生异常中断的指令的下一条指令处执行,即把lr_mode寄存器的内容复制到程序计数器PC中。 复位异常中断处理程序不需要返回。整个应用系统是从复位异常中断处理程序开始执行的,因而它不需要返回。 * 9.2.2 从异常中断处理程序中返回 1.??SWI和未定义指令异常中断处理程序的返回 2.??IRQ和FIQ异常中断处理程序的返回 3. 指令预取中止异常中断处理程序的返回 4. 数据访问中止异常中断处理程序的返回 * 9.3 在应用程序中安排异常中断处理程序 通常有两种方法将异常中断处理程序注册到异常中断向量表中。一种是使用跳转指令,另一种是使用数据读取指令LDR。 使用跳转指令的方法比较简单,可以在异常中断对应的向量表中的特定位置放一条跳转指令,直接跳转到该异常中断的处理程序。这种方法有一个缺点,

文档评论(0)

jiayou10 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档