网站大量收购独家精品文档,联系QQ:2885784924

4ARM指令系统(合成)的.doc

  1. 1、本文档共22页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
4ARM指令系统(合成)的

第四章 ARM指令系统概述 本章系统的介绍最常使用的ARM7TDMI-S内核支持的ARM V4指令集中的基本指令。ARM指令由基本指令和派生出的一些新的指令构成,但使用方法与基本指令类似。Thumb指令集作为ARM指令集的一个子集,其使用方法与ARM指令集类似,且一般不需要程序员手动编写,本章不作描述。 ARM指令集分为六类:分支指令、数据处理指令、程序状态寄存器、LOAD/STORE指令、协处理器指令、异常中断指令。 1.ARM分支指令 指令助记符 功能描述 B 分支指令 BX 带状态切换的分支指令 BL 带连接的分支指令 2.ARM的数据处理指令 这类指令能够完成数据的算术运算和逻辑操作,它的典型特征是两个操作数经过运算,产生一个结果。 类别 指令助记符 功能描述 算术运算类 ADD 加法指令 ADC 带进位的加法指令 SUB 减法指令 SBC 带借位的减法指令 RSB 逆项减法指令 RSC 带借位的逆项减法指令 逻辑运算类 AND 逻辑与指令 ORR 逻辑或指令 EOR 逻辑异或指令 BIC 位清除指令 比较类 CMP 比较指令 CMN 取反比较指令 测试类 TST 位测试指令 TEQ 相等测试指令 传送类 MOV 数据传送指令 MVN 数据取反传送指令 乘法类 MUL 32位乘法指令 MLA 32位乘加指令 UMULL 64位无符号乘法指令 UMLAL 64位无符号乘加指令 SMULL 64位有符号乘法指令 SMLAL 64位有符号乘加指令 3.ARM异常处理指令 指令助记符 功能描述 SWI 软件中断指令 4.ARM协处理器基本指令表 指令助记符 功能描述 CDP 协处理器数据操作指令 LDC 协处理器数据加载指令ARM处理器寄存器到协处理器寄存器的数据传送指令协处理器寄存器到ARM处理器寄存器的数据传送指令协处理器数据存储指令分支指令ARM程序设计中,有两种方法可以实现程序的跳转:使用专门分支指令或直接向程序计数器PC写入跳转地址值。使用分支指令可以实现在当前指令向前或向后32M字节的地址空间的任意跳转;直接向程序计数器PC4GB的地址空间中的任意跳转。 ARM采用流水线结构,当发生非顺序执行时,指令流水线清空。 在含有Thumb指令Thumb指令Thumb指令Thumb指令(Branch) 分支B{条件} 目标地址是最简单的分支 B 指令,ARM 处理器跳转到给定的地址继续执行。分支指令中实际的是相对PC值R15 的值的偏移量而不是绝对地址。偏移量由编器计算表示的有效偏移为 26 位(前后32MB的地址空间)。由汇编器来计算是 24 位有符号数,左移两位后有符号扩展为 32 位。B Label ;程序无条件跳转到标号Label处执行,PC:= Label BEQ Label3 ;程序当 CPSR中Z=1时,跳转到Labe3处执行,PC:= Label3 2.BL (Branch with Link) 带连接的分支 BL{条件} BL也是分支指令在分支, 的内容装载14寄存器 中。MOV PC,R14实现子程序返回。 Label0 ;程序跳转到Label0处执行,R14:=PC-4,且PC:=Label0 BLCC Label1 ;当 CPSR中Z=1时,跳转到标号Label1处执行 ;同时将当前的PC值保存到R14中 MOV PC,LR ;返回 3.BX (Branch and Exchange)带状态切换的分支指令 语句格式: BX{条件} BX指令跳转到指令中所指定的目标地址,目标地址处的指令既可以是ARM指令,也可以是Thumb指令。Thumb指令集的指令Thumb,Rm[0]=0表示ARM。 使用示例: BXLE R3 4.2 ARM的数据处理指令 数据的算术运算指令和数据处理指令的特征是两个操作数一起经过运算,产生一个结果,指令执行影响标志寄存器。数据的算术运算要求有两个操作数,规定一个操作数的寻址方式必须是寄存器类型,另一个可以是寄存器类型、立即数类型或者移位寻址方式。 ARM的数据运算与数据处理指令包括:算术运算类、逻辑运算类、比较类、测试类、传送类和乘法(Multiplication)指令。 1.算术运算类指令 (1)ADD : (Addition)加法 语句格式: ADD{条件}{S} Rd, Rn, op2 语句功能: ADD 的作用是把两个操作数相加,结果放置到目的寄存器Rd中。Rn是一个寄存器,op2可以是一个寄存器、被移位的寄存器、或一个立即值。即Rd:= Rn + op2 使用示例:

文档评论(0)

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

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

1亿VIP精品文档

相关文档