arm指令系统与汇编程序设计

arm指令系统与汇编程序设计

ID:18788454

大小:582.50 KB

页数:43页

时间:2018-09-24

arm指令系统与汇编程序设计_第1页
arm指令系统与汇编程序设计_第2页
arm指令系统与汇编程序设计_第3页
arm指令系统与汇编程序设计_第4页
arm指令系统与汇编程序设计_第5页
资源描述:

《arm指令系统与汇编程序设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第4章ARM指令系统与汇编程序设计4.1ARM指令集概述4.1.1ARM指令集主要特征ARM指令集所具有的主要特征归纳如下:1.ARM处理器中包含大量寄存器,这些寄存器在指令集中都可用于多种用途(目的寄存器、源寄存器、地址指针等);2.ARM指令集中所有指令均可条件执行,即依据条件域设定条件满足与否来决定是否执行;3.ARM处理器采用Load/Store体系结构(指令集为加载/存储型),即ARM指令集仅能处理寄存器中的数据,而且处理结果都要放回寄存器中,存储器访问需要通过专门的加载/存储指令来实现;4.ARM指令集均为“3地址”指令,指令中有两个源操作数寄存器和一个结果寄存器,且均可独立

2、设定;5.ARM处理器的ALU操作和移位操作可同时完成,即在单时钟周期内执行单条指令可同时完成一项普通的移位操作和一项普通ALU操作。6.ARM处理器可通过协处理器指令使ARM指令集得以扩展,包括在编程模式下增加新的寄存器和数据类型;7.ARM处理器在Thumb体系结构中以高密度16位压缩形式表示指令集(Thumb指令集)。4.1.2ARM指令基本格式ARM指令的助记符格式为:{}{S},,;注释举例:ADDEQSR1,R2,#5;R1=R2+5其中,表示“操作码”(如ADD),后缀{}表示“条件域”(如E

3、Q表示该指令只有当CPSR中Z标志置位才执行),后缀{S}表示指令执行结果将影响CPSR寄存器值;空格之后的表示“目的寄存器”(如R1),第一个逗号之后表示“第一操作数1(操作数1)”(如R2),第二个逗号之后的表示“第二操作数(操作数2)”(如#5表示立即数5)。分号之后为“注释”,由文字和符号组成(如R1=R2+5)。4.1.3ARM指令条件码域当处理器工作在ARM状态时,几乎所有的指令均根据CPSR中条件码的状态和指令的条件域有条件的执行。当指令的执行条件满足时,指令被执行,否则指令被忽略。每一条ARM指令包含4位条件码,位于指令的最高4位[31:28],

4、可表示16种条件,每一种条件用两个英文字符(大写)表示,作为指令助记符的后缀。例如,跳转指令B加上后缀EQ之后变为BEQ,表示“相等则跳转”(即当CPSR中的Z标志置位时发生跳转)。16种条件标志码中只有15种(表4.1)可供使用,第16种(1111)为暂时不能使用(系统保留)。表4.1ARM指令条件码(15项)条件码助记符后缀标志含义0000EQZ置位相等0001NEZ清零不相等0010CSC置位无符号数大于或等于0011CCC清零无符号数小于0100MIN置位负数0101PLN清零正数或零0110VSV置位溢出0111VCV清零未溢出1000HIC置位,Z清零无符号数大于1001LS

5、C清零,Z置位无符号数小于或等于1010GEN等于V带符号数大于或等于1011LTN不等于V带符号数小于1100GTZ清零(且N等于V)带符号数大于1101LEZ置位(或N不等于V)带符号数小于或等于1110AL忽略无条件执行4.2ARM寻址方式所谓寻址方式就是处理器根据指令中给出的地址信息来寻找物理地址的方式。目前ARM指令系统支持如下9种寻址方式。4.2.1立即寻址立即寻址也叫立即数寻址,这是一种特殊的寻址方式,操作数本身就在指令中给出,只要取出指令也就取到了操作数。这个操作数被称为立即数,对应的寻址方式也就叫做立即寻址。例如:ADDR0,R0,#0x3f;R0←R0+0x3f该指令

6、的第二个源操作数即为立即数,须以“#”为前缀,对于以十六进制表示的立即数,还要求在“#”之后加上“0x”或“&”标识符。4.2.2寄存器寻址寄存器寻址即寄存器中的数值作为操作数,这种寻址方式是各类处理器都采用的一种方式,也是一种执行效率较高的寻址方式。例如:ADDR0,R1,R2;R0←R1+R2该指令的所有操作数均在寄存器中,实际执行效果是将寄存器R1和R2的内容相加,其结果存放在寄存器R0中。4.2.3寄存器移位寻址寄存器移位寻址的操作数由寄存器的数值做相应移位而得到。移位操作在指令中以助记符形式给出,而移位的位数可用立即数或寄存器寻址方式表示。ARM处理器支持的移位操作共有5种,分

7、别是逻辑左移(LSL)、逻辑右移(LSR)、算术右移(ASR)、循环右移(ROR)和带扩展的循环右移(RRX),括号内为相应操作的助记符,各种移位操作所实现的功能详见本节4.3.8。举例如下:ADDR0,R1,R2,RORR3;R0=R1+R2循环右移R3位MOVR0,R1,LSL#3;R0=R1逻辑左移3位4.2.4寄存器间接寻址寄存器间接寻址就是以寄存器中的值作为操作数的地址,而操作数本身存放在存储器中。例如:ADDR0,R1,

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。