第3章 ARM指令集-第5课.pptVIP

  1. 1、本文档共28页,可阅读全部内容。
  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文档。上传文档
查看更多
第3章 ARM指令集-第5课

* 第3章 ARM指令集 c.逻辑运算指令 c-1. AND ? 功能:将两个源操作数按位作逻辑与操作,将结果保存到目标寄存器中,可能会更新条件标志位。 ? 语法格式及伪码: ? 使用:用于提取寄存器内容的某些位(掩码中对应位设为1,其余位设置为0)。 c-2. ORR ? 功能:将两个源操作数按位作逻辑或操作,将结果保存到目标寄存器中,可能会更新条件标志位。 ? 语法格式及伪码: ? 使用:用于将寄存器中的某些位设置为1(掩码中对应位为1,其余设置为0)。 ? 举例 c-3. EOR ? 功能:将两个源操作数按位作逻辑异或操作,将结果保存到目标寄存器中,可能会更新条件标志位。 ? 语法格式及伪码: ? 使用:用于将寄存器中某些位取反(掩码中对应位设为1,其余为0)。 d.比较指令 d-1. CMP ? 功能:将两个源操作数相减,并更新条件标志位(后续指令可根据条件标志位决定是否被执行)。 ? 语法格式及伪码: ? 使用:不保存操作结果,只用来修改条件标志位。 d-2. CMN ? 功能:将两个源操作数相加,并更新条件标志位(后续指令可根据条件标志位决定是否被执行)。 ? 语法格式及伪码: ? 使用:当OP2=0或0负零)时,CMP和CMN的操作结果不同。 e.测试指令 e-1. TST ? 功能:将两个操作数按位做逻辑与操作,根据结果更新条件标志位(和比较指令一样只能修改,结果被丢弃)。 ? 语法格式及伪码: ? 使用:用于测试寄存器中某个/些位是1还是0(测试多个位时,可以一个一个测试;测试是利用“Z”条件标志位的取值来实现的)。 e-2.TEQ ? 功能:将两个操作数按位做逻辑异或操作,根据结果更新条件标志位(和比较指令一样只能修改,结果被丢弃)。 ? 语法格式及伪码: ? 使用:用于比较两个操作数是否相同(利用“Z”实现)或两个操作数的符号是否相同(利用“N”实现)。 f.乘法指令 ARM有两类乘法指令:1.32位的乘法指令;2.64位的乘法指令。细分下来共有6条指令: f-1.MUL ? 功能:实现两个32位数(有符号/无符号均可)的乘积,将结果放入一个32位寄存器中,可以更新条件标志位。 ? 语法格式及伪码: ? 使用:只保存结果的低32位,对于有/无符号数而言执行结果相同;对于ARMv5版本及以上,指令不影响C位(以前版本中指令执行后C值不确定);Rm、Rs和Rd为R15时指令的执行结果不可预测(不能使用R15)。 f-2.MLA ? 功能:实现两个32位数(有符号/无符号均可)的乘积,再加上第三个操作数,将结果放入一个32位寄存器中,可以更新条件标志位。 ? 语法格式及伪码: ? 使用:同MUL(MLA R0,R1,R2,R3)。 f-3.SMULL ? 功能:实现两个32位有符号数的乘积,64位的结果存放在两个寄存器中,可能修改条件标志位。 ? 语法格式及伪码: ? 使用:对于ARMv5版本及以上,指令不影响C位(以前版本中指令执行后C值不确定);Rm、Rs和RdHi/RdLo为R15时指令的执行结果不可预测(不能使用R15)。 // SMULL R1,R2,R3,R4 ? R2=(R3×R4)[63:32],R1=(R3×R4)[31:0] f-4.SMLAL ? 功能:实现两个32位有符号数的乘积,并与目的寄存器中的值相加,64位的结果存放在目的寄存器中,可能修改条件标志位。 ? 语法格式及伪码: ? 使用:同SMULL。 f-5.UMULL ? 功能:实现两个32位无符号数的乘积,64位的结果存放在两个寄存器中,可能修改条件标志位。 ? 语法格式及伪码: ? 使用:同SMULL。 f-6.UMLAL ? 功能:实现两个32位无符号数的乘积,并与目的寄存器中的值相加,64位的结果存放在目的寄存器中,可能修改条件标志位。 ? 语法格式及伪码: ? 使用:同SMULL。 g.其它----位清除指令(BIC) ? 功能:将寄存器的值和OP2的反码做逻辑与操作,将结果保存到Rd,可能更新条件标志位。 ? 语法格式及伪码: ? 使用:用于将寄存器中某些位设置为

文档评论(0)

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

你好,我好,大家好!

版权声明书
用户编号:7140162041000002

1亿VIP精品文档

相关文档