第2章ARM指令分类与其寻址方式.docVIP

  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文档。上传文档
查看更多
第2章 ARM指令分类及其寻址方式 在本章中,将介绍ARM指令分类以及各类指令对应的寻址方式。 2.1 ARM指令集概要介绍 在本节中,将介绍ARM指令相关的一些基本概念,包括指令的分类、指令的一般编码格式以及ARM指令中的条件码。 2.1.1 ARM指令的分类 ARM指令集可以分为跳转指令、数据处理指令、程序状态寄存器(PSR)传输指令、Load/Store指令、协处理器指令和异常中断产生指令6类。 2.1.2 ARM指令的一般编码格式 ARM指令字长为固定的32位。一条典型的ARM指令编码格式如下: 31 28 27 25 24 21 20 19 16 15 12 11 8 7 0 cond 0 0 1 opcode S Rn Rd shifter_operand 其中的符号及参数说明如下。 opcode:指令操作符编码。 cond:指令执行的条件编码。 S:决定指令的操作是否影响CPSR的值。 Rd:目标寄存器编码。 Rn:包含第1个操作数的寄存器编码。 shifter_operand:表示第2个操作数。 一条典型的ARM指令语法格式如下所示: opcode{cond}{S} Rd,Rn,shifter_operand 其中的符号及参数说明如下。 opcode:是指令助记符,如ADD表示算术加操作指令。 {cond}:表示指令执行的条件。 {S}:决定指令的操作是否影响CPSR的值。 Rd:表示目标寄存器。 Rn:表示包含第1个操作数的寄存器。 shifter_operand:表示第2个操作数。 2.1.3 ARM指令的条件码域 大多数ARM指令都可以有条件地执行,也就是根据CPSR中的条件标志位决定是否执行该指令。当条件满足时执行该指令,条件不满足时该指令被当作一条NOP指令,这时处理器进行判断中断请求等操作,然后转向下一条指令。 在ARMv5之前的版本中,所有的指令都是有条件执行的,从ARMv5版本开始,引入了一些必须无条件执行的指令。 每一条ARM指令包含4位的条件码,如下所示: 31 28 27 0 cond 条件码共有16个,各条件码的含义和助记符如表2.1所示。可条件执行的指令可以在其助记符的扩展域加上条件码助记符,从而在特定的条件下执行。 表2.1 指令的条件码 条件码 cond 条件码 助记符 含 义 CPSR中条件标志位值 0000 EQ 相等 Z=1 0001 NE 不相等 Z=0 0010 CS/HS 无符号数大于/等于 C=1 0011 CC/LO 无符号数小于 C=0 0100 MI 负数 N=1 0101 PL 非负数 N=0 0110 VS 上溢出 V=1 0111 VC 没有上溢出 V=0 1000 HI 无符号数大于(Higher) C=1且Z=0 1001 LS 无符号数小于等于 C=0或Z=1 1010 GE 带符号数大于等于 N=1且V=1 或N=0且V=0 1011 LT 带符号数小于 N=1且V=0 或N=0 且V=1 1100 GT 带符号数大于 Z=0且N=V 1101 LE 带符号数小于/等于 Z=1或N!=V 1110 AL 无条件执行 1111 NV 该指令从不执行 ARMv3之前 未定义 该指令执行结果不可预知 ARMv3及ARMv4 AL 该指令无条件执行 ARMv5及以上版本 2.2 ARM指令的寻址方式 ARM指令的寻址方式有以下几种,分别进行讨论: 数据处理指令的操作数的寻址方式。 字及无符号字节的Load/Store指令的寻址方式。 杂类Load/Store指令的寻址方式。 批量Load/Store指令的寻址方式。 协处理器Load/Store指令的寻址方式。 2.2.1 数据处理指令的操作数的寻址方式 通常数据处理指令的格式如下所示: opcode{cond}{S} Rd,Rn,shifter_operand 其中的符号及参数说明如下。 opcode:是指令助记符,如ADD表示算术加操作指令。 {cond}:表示指令执行的条件。 {S}:决定指令的操作是否影响CPSR的值。 Rd:表示目标寄存器。 Rn:表示包含第1个操作数的寄存器。 shifter_operand:表示第2个操作数。 shifter_operand通常有下面3种格式。 (1) 立即数方式。每个立即数由一个8位的常数循环右移偶数位得到。其中循环右移的位数由一个4位二进制的两倍表示。如果立即数记作immediate,8位常数记作imm

文档评论(0)

139****3928 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档