ARM指令系统和汇编程序设计.doc

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

第4章 ARM指令系统与汇编程序设计 4.1 ARM指令集概述 4.1.1 ARM指令集主要特征 ARM指令集所具有的主要特征归纳如下: 1.ARM处理器中包含大量寄存器,这些寄存器在指令集中都可用于多种用途(目的寄存器、源寄存器、地址指针等); 2.ARM指令集中所有指令均可条件执行,即依据条件域设定条件满足与否来决定是否执行; 3.ARM处理器采用Load/Store体系结构(指令集为加载/存储型),即ARM指令集仅能处理寄存器中的数据,而且处理结果都要放回寄存器中,存储器访问需要通过专门的加载/存储指令来实现; 4.ARM指令集均为“3地址”指令,指令中有两个源操作数寄存器和一个结果寄存器,且均可独立设定; 5.ARM处理器的ALU操作和移位操作可同时完成,即在单时钟周期内执行单条指令可同时完成一项普通的移位操作和一项普通ALU操作。 6.ARM处理器可通过协处理器指令使ARM指令集得以扩展,包括在编程模式下增加新的寄存器和数据类型; 7.ARM处理器在Thumb体系结构中以高密度16位压缩形式表示指令集(Thumb指令集)。 4.1.2ARM指令基本格式 ARM指令的助记符格式为: opcode{cond}{S} Rd,Rn,op2; 注释 举例:ADDEQS R1,R2,#5; R1=R2+5 其中,opcode表示“操作码”(如ADD),后缀{cond}表示“条件域”(如EQ表示该指令只有当CPSR中Z标志置位才执行),后缀{S}表示指令执行结果将影响CPSR寄存器值;空格之后的Rd表示“目的寄存器”(如R1),第一个逗号之后Rn表示“第一操作数1(操作数1)”(如R2),第二个逗号之后的op2表示“第二操作数(操作数2)”(如#5表示立即数5)。分号之后为“注释”,由文字和符号组成(如R1=R2+5)。 4.1.3ARM指令条件码域 当处理器工作在ARM状态时,几乎所有的指令均根据CPSR中条件码的状态和指令的条件域有条件的执行。当指令的执行条件满足时,指令被执行,否则指令被忽略。每一条ARM指令包含4位条件码,位于指令的最高4位[31:28],可表示16种条件,每一种条件用两个英文字符(大写)表示,作为指令助记符的后缀。例如,跳转指令B加上后缀EQ之后变为BEQ,表示“相等则跳转”(即当CPSR中的Z标志置位时发生跳转)。16种条件标志码中只有15种(表4.1)可供使用,第16种(1111)为暂时不能使用(系统保留)。 表4.1 ARM指令条件码(15项) 条件码 助记符后缀 标 志 含 义 0000 EQ Z 置位 相等 0001 NE Z 清零 不相等 0010 CS C 置位 无符号数大于或等于 0011 CC C 清零 无符号数小于 0100 MI N 置位 负数 0101 PL N 清零 正数或零 0110 VS V 置位 溢出 0111 VC V 清零 未溢出 1000 HI C 置位,Z 清零 无符号数大于 1001 LS C 清零,Z 置位 无符号数小于或等于 1010 GE N 等于V 带符号数大于或等于 1011 LT N 不等于V 带符号数小于 1100 GT Z 清零(且N等于V) 带符号数大于 1101 LE Z 置位(或N不等于V) 带符号数小于或等于 1110 AL 忽略 无条件执行 4.2 ARM寻址方式 所谓寻址方式就是处理器根据指令中给出的地址信息来寻找物理地址的方式。目前ARM指令系统支持如下9种寻址方式。 4.2.1 立即寻址 立即寻址也叫立即数寻址,这是一种特殊的寻址方式,操作数本身就在指令中给出,只要取出指令也就取到了操作数。这个操作数被称为立即数,对应的寻址方式也就叫做立即寻址。例如: ADD R0, R0, #0x3f; R0←R0+0x3f 该指令的第二个源操作数即为立即数,须以“#”为前缀,对于以十六进制表示的立即数,还要求在“#”之后加上“0x”或“”标识符。 4.2 寄存器寻址即寄存器中的数值作为操作数,这种寻址方式是各类处理器都采用的一种方式,也是一种执行效率较高的寻址方式。例如: ADD R0, R1, R2; R0←R1+R2 该指令的所有操作数均在寄存器中,实际执行效果是将寄存器R1和R2的内容相加,其结果存放在寄存器R0中。 4.2.3 寄存器移位寻址 寄存器移位寻址的操作数由寄存器的数值做相应移位而得到。移位操作在指令中以助记符形式给出,而移位的位数可用立即数或寄存器寻址方式表示。ARM处理器支持的移位操作共有5种,分别是逻辑左移(LSL)、逻辑右移(LSR)、算术右移(ASR)、循环右移(ROR) 和带扩展的循环右移(RRX),括号内为相应操作的助记符,各种移位操作所实现的功能详见本节4

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档