网站大量收购独家精品文档,联系QQ:2885784924

嵌入式复习PPT的.ppt

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

总复习;ARM920T的指令采用RISC五级流水线结构(包括取指,译码,执行,缓冲数据,回写),在每一个时钟周期内可能有5个指令在执行,加快了指令执行速度。 注意:PC指向取指的指令,而不是正在执行的指令。即正在执行的指令对应的地址总是当前PC值对应地址的前2条指令的地址。 ;ARM微处理器在较新的体系结构中支持两种指令集:ARM指令集和Thumb指令集。 ARM指令为32位的长度 Thumb指令为16位长度;ARM体系结构可以用两种方法存储字数据,称之为 大端格式 小端格式 大端格式 在这种格式中,字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中, 小端格式 在这种格式中,字数据的高字节存储在高地址中,而字数据的低字节则存放在低地址中,如图所示。;寄存器R13常作为堆栈指针(SP)。在ARM指令集当中,没有以特殊方式使用R13的指令或其它功能,只是习惯上都这样使用。但是在Thumb指令集中存在使用R13的指令。 R14也称作子程序链接寄存器(Subroutine Link Register)或链接寄存器LR。 R14为链接寄存器(LR),在结构上有两个特殊功能: 在每种模式下,模式自身的R14版本用于保存子程序返回地址; 当发生异常时,将R14对应的异常模式版本设置为异常返回地址。 寄存器R15常用于保存PC。; 寄存器CPSR为程序状态寄存器,在异常模式中,另外一个寄存器“程序状态保存寄存器(SPSR)”可以被访问。每种异常都有自己的SPSR,在因为异常事件而进入异常时它保存CPSR的当前值,异常退出时可通过它恢复CPSR。 ;; 异常发生会使得正常的程序流程被暂时停止,例如ARM9处理器响应IRQ异常。 处理器进入异常处理程序前,应该保存其当前的状态,以便当异常处理程序完成后,处理器能回到原来程序的断点处继续执行。;对异常的响应 除复位异常立即中止当前指令外,处理器完成当前指令后才去执行异常处理程序。 (1)将下一条指令的地址存入相应连接寄存器LR,以便程序在处理异常返回时能从正确的位置重新开始执行。 ;(2)将CPSR复制到相应的SPSR中。 (3)根据异常类型,强制设置CPSR的运行模式位。 (4)强制PC从相关的异常向量地址取下一条指令执行,从而跳转到相应的异常处理程序处,同时设置中断禁止位,以禁止中断发生。 注意:如果异常发生时,处理器处于Thumb状态,则当异常向量地址加载入PC时,处理器自动切换到ARM状态。 ;异常返回 复位异常发生后,由于系统自动从0始重新执行程序,因此复位异常处理程序执行完无须返回。其它所有异常处理完后必须返回到原来程序处继续向下执行。;异常返回 异常处理完毕之后,ARM微处理器会执行以下几步操作从异常返回: ⑴根据异常类型将PC值恢复成断点地址。 ⑵将SPSR_mode复制回CPSR中。 ⑶若在进入异常处理时设置了中断禁止位,要在此清除。 注意:恢复CPSR的动作会将T、F和I位自动恢复为异常发生前的值。;ARM微处理器支持这四种类型的堆栈工作方式,即: 满递增方式FA(Full Ascending):堆栈指针指向最后入栈的数据位置,且由低地址向高地址生成。 满递减方式FD(Full Decending):堆栈指针指向最后入栈的数据位置,且由高地址向低地址生成。 空递增方式EA(Empty Ascending):堆栈指针指向下一个入栈数据的空位置,且由低地址向高地址生成。 空递减方式ED(Empty Decending):堆栈指针指向下一个入栈数据的空位置,且由高地址向低地址生成。 ATPCS规定数据栈为满递减类型。;满递减; ARM指令的基本语法格式如下:;ARM指令集——第2个操作数;ARM指令集——第2个操作数;;思考:在ARM指令中,什么是合法的立即数?;常用的加载存储指令如下: LDM(或STM)指令 格式为: LDM(或STM){条件}{类型} 基址寄存器{!},寄存器列表{∧} LDM(或STM)指令用于从由基址寄存器所指示的一片连续存储器到寄存器列表所指示的多个寄存器之间传送数据,该指令的常见用途是将多个寄存器的内容入栈或出栈。其中,{类型}为以下几种情况:;IA 每次传送后地址加1,递增方式; IB 每次传送前地址加1,递增方式; DA 每次传送后地址减1,递减方式; DB 每次传送前地址减1,递减方式; FD 满递减堆栈; ED 空递减堆栈; FA 满递增堆栈; EA 空递增堆栈;;{!}为可选后缀,若选用该后缀,则当数据传送完毕之后,将最

文档评论(0)

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

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

1亿VIP精品文档

相关文档