四 ARM指令集.pptVIP

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

指令长度 指令集可以是以下任一种 32 bits 长 (ARM状态) 16 bits 长 (Thumb 状态) ARM7TDMI 支持3种数据类型 字节 (8-bit) 半字 (16-bit) 字 (32-bit) 字必须被排成4个字节边界对齐,半字必须被排列成2个字节边界对齐 ARM 指令集的特点 向后兼容:新版本增加指令,并保持指令向后兼容; Load-store 结构* load/store –从存储器中读某个值,操作完后再将其放回存储器中 只对存放在寄存器的数据进行处理; 对于存储器中的数据,只能使用load/store指令进行存取 指令格式 指令格式 3 地址指令格式 在ARM状态中使用 例 ARM 指令分类 数据处理指令 – 使用和改变寄存器的值 数据传送指令 – 把存储器的值拷贝到寄存器中 (load) or 把寄存器中的值拷贝到存储器中(store) 控制流指令 分支 分支和链接, 保存返回的地址,以恢复最先的次序 软件中断指令 程序状态寄存器指令 协处理器指令 ARM指令编码格式 说明 Cond 指令执行的条件编码 Opcode 指令操作符编码 S 决定指令的操作是否影响CPSR的值 Rd 操作目标寄存器编码 Rn 包含第一操作数的寄存器编码 Shifter_operand 表示第二操作数 ARM指令集 数据处理指令 - 1 数据处理指令的类别 算术操作 按位逻辑操作 寄存器移位操作 比较操作 操作数: 32-bits 宽; 有3种指定操作数的方式 来自寄存器 第二操作数可以是常数(立即数) 移位寄存器操作数 结果: 32-bits 宽, 放在寄存器中 长乘法产生64位结果 数据处理指令 – 2* 数据处理指令 - 3 数据处理指令 - 4 数据处理指令 - MOV 桶形移位器 桶形移位器的使用 数据处理指令 移位操作 在任何数据处理指令中,第二个寄存器操作数可以有应用该操作数的移位操作. 逻辑移位 LSL:逻辑左移 字的最小位空位清零 LSR:逻辑右移字的最大位空位清零. 桶形移位器操作 数据处理指令 - 7 移位操作 (cont’d) 算术移位 ASR: = LSR ASL: 算术左移 循环移位: ROR, RRX 数据处理指令 立即数操作: 移位寄存器操作数 第二个操作数在与第一个操作数合成之前,是服从于移位操作的. 条件码标志 任何数据处理指令都可以设置条件码 (N, Z, V, and C) 适用于除比较操作外的所有数据处理指令 特殊的请求必须在汇编语言中实现,这种请求是通过把”S”增加到选择代码中指定的 算术操作设置所有的标志位 (N, Z, C, and V) 逻辑和移位操作设置 N and Z 当无移位操作时,保存V和C,或根据移位操作设置 条件执行及标志位** 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 Condition Codes 下表为所有可能的条件码: 注意:AL为默认状态,不需要单独指出 条件执行示例 一系列的指令都使用条件指令 if (a==0) func(1); CMP r0,#0 MOVEQ r0,#1;把func()函数的参数赋给r0 BLEQ func 置标志位,再使用不同的条件码 if (a==0) x=0 ;r0:a,r1:x if (a0) x=1; CMP r0,#0 MOVEQ r1,#0 MOVGT r1,#1 使用条件比较指令 if (a==4 || a==10) x=0; CMP r0,#4 CMPNE r0,#10 MOVEQ r1,#0 条件执行 所有的ARM指令都可以条件执行 指令的执行与否取决于CPSR寄存器的N, Z, C and V标志位 所有的Thumb指令都可以解压成全部条件指令 Condition Field in instruction 0000 = EQ - Z set (equal) 0001 = NE - Z clear (not equal) 0

文档评论(0)

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

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

1亿VIP精品文档

相关文档