第4章 ARM处理器编程模型与指令系统.ppt

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

第四章 ARM处理器编程模型与指令系统 第四章 ARM处理器 编程模型与指令系统 4.1 ARM微处理器的工作状态 体系结构直接支持的数据类型 4.1 ARM微处理器的工作状态 从编程的角度看,ARM微处理器的工作状态一般有两种,并可在两种状态之间切换: ARM状态:此时处理器执行32位的字对齐的ARM指令 Thumb状态:此时处理器执行16位的、半字对齐的Thumb指令 4.1 ARM微处理器的工作状态 处理器状态 4.2 ARM微处理器的运行模式 处理器7种模式 4.2 ARM微处理器的运行模式 特权模式(Privileged Modes) 4.2 ARM微处理器的运行模式 异常模式(Exception Modes) 4.2 ARM微处理器的运行模式 用户和系统模式 4.3 ARM体系结构的存储器格式 ARM体系结构可以用两种方法存储字数据 大端格式:字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中。 4.3 ARM体系结构的存储器格式 ARM体系结构可以用两种方法存储字数据 小端格式:与大端存储格式相反,在小端存储格式中,低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节。 4.4 寄存器组织 4.4.1 ARM状态下的寄存器组织 通用寄存器 :通用寄存器包括R0~R15,可以分为三类: 未分组寄存器R0~R7 分组寄存器R8~R14 程序计数器PC(R15) 4.4 寄存器组织 4.4.1 ARM状态下的寄存器组织 状态寄存器 当前程序状态寄存器(Current Program Status Register,CPSR) 备份的程序状态寄存器(Saved Program Status Register,SPSR) 4.4 寄存器组织 程序状态寄存器CPSR格式 4.4 寄存器组织 程序状态寄保存存器SPSR格式 4.4 寄存器组织 R14(LR)寄存器与子程序调用 4.4 寄存器组织 R14寄存器注意要点 4.4 寄存器组织 R14寄存器注意要点 4.4 寄存器组织 R14寄存器注意要点 4.4 寄存器组织 4.4.2 Thumb状态下的寄存器组织 Thumb状态下的寄存器集是ARM状态下寄存器集的一个子集,程序可以直接访问8个通用寄存器(R7~R0)、程序计数器(PC)、堆栈指针(SP)、连接寄存器(LR)和CPSR。 Thumb状态寄存器在Arm状态寄存器上的映射 4.4 寄存器组织 Thumb状态下的寄存器组织与ARM状态下的寄存器组织的关系: Thumb状态下和ARM状态下的R0~R7是相同的; Thumb状态下的SP对应于ARM状态下的R13; Thumb状态下的LR对应于ARM状态下的R14; Thumb状态下的程序计数器对应于ARM状态下R15; Thumb状态下和ARM状态下的CPSR和所有的SPSR是相同的 Thumb状态下的寄存器组织 4.5 ARM的异常 当正常的程序执行流程发生暂时的停止时,称之为异常 。 在处理异常之前,当前处理器的状态必须保留 处理器允许多个异常同时发生,它们将会按固定的优先级进行处理 异常与中断的概念并不完全等同 4.5 ARM的异常 4.5.1 ARM体系结构所支持的异常类型 在ARM体系结构中,异常中断用来处理软件中断、未定义指令陷阱(不是真正的“意外”事件)、系统复位功能(在逻辑上发生在程序执行前而不是程序执行中)和外部事件。这些“不正常”事件都被划归“异常”,因为在处理器的控制机制中,它们都使用同样的流程进行异常处理。 4.5 ARM的异常 ARM异常按引起异常事件的不同可分为以下3类 : 指令执行引起的直接异常 指令执行引起的间接异常 外部产生的与指令流无关的异常 异常向量(Exception Vectors) 4.5 ARM的异常 4.5.3 对异常的响应 ARM微处理器对异常的响应过程如下: 1、将下一条指令的地址存入相应的连接寄存器LR,以便程序在处理异常返回时能从正确的位置重新开始执行; 2、将CPSR复制到相应的SPSR中; 3、设置当前状态寄存器CPSR中的相应位; 4、给程序计数器(PC)强制赋值,使程序从相应的异常向量地址开始执行中断处理程序 ; 4.5 ARM的异常 4.5.4 从异常返回 ARM微处理器会执行以下操作从异常返回: 1、所有修改过的用户寄存器必须从处理程序的保护堆栈中恢复(出栈); 2、将连接寄存器LR的值减去相应的偏移量送到PC中; 3、将SPSR_mode寄存器内容复制回CPSR中,使得CPSR从相应的SPSR中恢复,即恢复被中断的程序工作状态; 4、若在进入异常处理时设置了中断禁止位,要在此清除。 4.5 ARM的异常 4.5.4 从异常返

文档评论(0)

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

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

1亿VIP精品文档

相关文档