ARM体系结构与编程(第2版)第2章总结.ppt

  1. 1、本文档共17页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
在本章中,将介绍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 其中的符号及参数说明如下。 opcode:指令操作符编码。 cond:指令执行的条件编码。 S:决定指令的操作是否影响CPSR的值。 Rd:目标寄存器编码。 Rn:包含第1个操作数的寄存器编码。 shifter_operand:表示第2个操作数。 * cond 0 0 1 opcode S Rn Rd shifter_operand 2.1.3 ARM指令的条件码域 条件码共有16个,各条件码的含义和助记符如表2.1所示。可条件执行的指令可以在其助记符的扩展域加上条件码助记符,从而在特定的条件下执行。 参见教材P23 * 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个操作数。 * 2.2.1 数据处理指令的操作数的寻址方式 shifter_operand通常有下面3种格式。 (1) 立即数方式。 (2) 寄存器方式。 (3) 寄存器移位方式。 数据处理指令操作数的具体寻址方式有下面11种。 #immediate Rm Rm, LSL #shift_imm Rm, LSL Rs Rm, LSR #shift_imm Rm, LSR Rs Rm, ASR #shift_imm Rm, ASR Rs Rm, ROR #shift_imm Rm, ROR Rs Rm, RRX * 2.2.2 字及无符号字节的Load/Store指令的寻址方式 各种类型的Load/Store指令的寻址方式由两部分组成。一部分为一个的基址寄存器;另一部分为一个地址偏移量。基址寄存器可以为任一个通用寄存器;地址偏移量可以有以下3种格式: 立即数。 寄存器。 寄存器及一个移位常数。 同样,寻址方式的地址计算方法有如下3种: 偏移量方法。 事先更新方法。 事后更新方法。 * 2.2.2 字及无符号字节的Load/Store指令的寻址方式 LDR指令的语法格式如下所示: ?LDR{cond}{B} {T}Rd,address_mode 其中,address_mode表示第2个操作数的内存地址,共有如下9种格式: [Rn, #+/–offset_12] [Rn, +/–Rm] [Rn, +/–Rm,shift#shift_imm] [Rn, #+/–offset_12]! [Rn, +/–Rm]! [Rn, +/–Rm,shift#shift_imm]! [Rn], #+/–offset_12 [Rn], +/–Rm [Rn], +/–Rm,shift#shift_imm * 2.2.3 杂类Load/Store指令的寻址方式 这里所说的杂类Load/Store指令,包括操作数为半字(无符号数或带符号数)数据的Load/Store指令;操作数为带符号的字节数据的Load 指令;双字的Load/Store指令。这类指令的语法格式为: ?LDR|STR{cond}H|SH|SB|D Rd,addressing_mode ?其中,addressing_mode是指令中内存单元的寻址方式,具体有以下6种格式: [Rn, #+/–offset_8] [Rn, +/–

文档评论(0)

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

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

1亿VIP精品文档

相关文档