第四讲 ARM指令系统(4课时).pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第四讲 ARM指令系统(4课时)

第 四 讲 ARM指令系统和汇编编程 ARM 编程模型 ARM存储器格式:零地址开始字节线型组合 ARM的七种工作模式 用户模式:USER 系统(高级用户)模式:SYSTEM 异常模式:Supervisor,Undef, About, IRQ,FIQ 不同的模式对应不同的寄存器资源和权限 ARM的寄存器组成 影子寄存器的概念 R13,R14,R15 CPSR/SPSR ARM 寄存器组织 ARM 异常总结 异常改变指令正常执行的顺序 ARM有7种异常 复位 数据中止(ABOUT) 快速中断请求 普通中断请求 预取指中止(ABOUT) 软件中断(SWI) 未定义指令中止(UNDEF) 一旦异常发生,处理器进入特定模式,跳转到向量表中的异常处理程序入口 每种异常都有一个优先级 中断是一种特殊的异常 异常处理 When an exception occurs, the ARM: Copies CPSR into SPSR_mode Sets appropriate CPSR bits If core currently in Thumb state then ARM state is entered. Mode field bits Interrupt disable bits (if appropriate) Stores the return address in LR_mode Sets PC to vector address To return, exception handler needs to: Restore CPSR from SPSR_mode Restore PC from LR_mode This can only be done in ARM state. 异常返回时候PC指针的调整 SWI和未定义指令异常是由当前执行的指令产生的 ,当SWI和未定义指令异常产生时,程序计数器PC的值还未更新,它指向当前指令后面第2条指令: MOV PC ,LR 当IRQ和FIQ异常产生时,程序计数器PC的值已经更新,它指向当前指令后面第3条指令。 SUBS PC , LR ,#4 当发生指令预取中止异常时,程序要返回到该有问题的指令处,重新读取并执行该指令。因此指令预取中止异常处理程序返回到产生该指令预取中止异常的指令处 SUBS PC ,LR ,#4 数据访问中止异常是由数据访问指令产生的,当数据访问中止异常产生时,程序计数器PC的值已经更新,它指向当前指令后面的第3条指令。 SUBS PC ,LR , #8 第 四 讲 ARM指令系统和汇编编程 ARM指令集的特点 所有的ARM指令都是32位宽,在存储器中以4字节的边界对齐,THUMB指令16位宽,2字节边界对齐 LOAD/STORE架构,包含非常强大的多寄存器Load和Store指令 指令可条件执行 ARM指令的分类 数据处理指令 分支指令 数据传送指令(访问存储器) 其他指令 软件中断SWI指令 程序状态寄存器指令 简单的ARM程序 4.2 指令集介绍 ARM指令集——基本指令格式 条件执行和标志位 ARM指令可以通过增加条件执行码后缀来条件执行 采用这种方法可以减少分支指令,就可增加代码密度,提高运行性能 ,看下面的例子 CMP r3,#0 CMP r3,#0 BEQ skip ADDNE r0,r1,r2 ADD r0,r1,r2 skip 在缺省的情况下,数据处理指令不会影响到 状态寄存器中的标识位。但是条件码标志可由“S”来设置,CMP不需要加“S” loop … SUBS r1,r1,#1 BNE loop 条件执行举例 条件码 第二个操作数-桶型移位器 寄存器, 可以选择移位 移位的值: 5 bit 整数 另外一个寄存器的值 立即数 8位立即数, 范围是 0-255. 一个8位的常数循环右移偶数位 32位常数载入寄存器以后使用 数据处理指令的二进制编码 立即数 (1) ARM指令中的操作数不能包含32位的立即数常量 所有的ARM指令都固定为32位长 数据处理指令中有12位可以用作第二个操作数,位[7:0]是8位立即数,位[11:8]是移位的位数 规则是“每个立即数是由一个8位的常数循环右移偶数位得到” 研究表明:在操作数中大部分是小数据,只有很少是大数据 50% of all constants lie between the range -15 and +15

文档评论(0)

cj80011 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档