ARM指令的特点和寻址方式.ppt
- 文档编号:5901301
- 上传时间:2023-05-09
- 格式:PPT
- 页数:19
- 大小:350KB
ARM指令的特点和寻址方式.ppt
《ARM指令的特点和寻址方式.ppt》由会员分享,可在线阅读,更多相关《ARM指令的特点和寻址方式.ppt(19页珍藏版)》请在冰点文库上搜索。
第3章ARM指令特点和寻址方式,ARM指令特点,ARM指令系统的主要特征大量的寄存器,都可用于多种用途;Load-Store体系结构3地址指令(两个源操作数寄存器和结果寄存器独立设定)每条指令都条件执行,包含非常强大的多寄存器Load和Store指令能在单时钟周期执行的单条指令内完成一项普通的移位操作和一项普通的ALU操作能过协处理器指令集来扩展ARM指令集,包括在编程模式下增加了新的寄存器和数据类型在Thumb体系结构中以高密度16位压缩形式表示指令集,ARM汇编指令,ARM指令的基本格式如下:
S,其中:
opcode指令助记符,如LDR、STR等。
cond执行条件,如EQ、NE等。
S是否影响CPSR寄存器的值,书写时影响CPSR。
Rd目标寄存器。
Rn第1个操作数的寄存器。
operand2第2个操作数。
在上面的基本格式中,“”符号内的项是必需的,“”符号内的项是可选的。
例如,是指令助记符,这是必须书写的;而为指令执行条件,是可选项。
若不书写,则使用默认条件AL(无条件执行)。
ARM汇编指令指令格式,指令格式举例如下:
LDRR0,R1;读取R1地址上的存储器单元内容,执行条件AL(总是)ADDSR1,R1,#1;加法指令R1+1R1,影响CPSR寄存器(S)SUBNESR1,R1,#0x10;条件执行减法运算(NE),R1-0x10=R1,影响CPSR寄存器(S),ARM汇编指令指令的条件域,当处理器工作在ARM状态时,几乎所有的指令均根据CPSR中条件码的状态和指令的条件域有条件的执行。
当指令的执行条件满足时,指令被执行,否则指令被忽略。
每一条ARM指令包含4位的条件码,位于指令的最高4位31:
28。
条件码共有16种,每种条件码可用两个字符表示,这两个字符可以添加在指令助记符的后面和指令同时使用。
例如,跳转指令B可以加上后缀EQ变为BEQ表示“相等则跳转”,即当CPSR中的Z标志置位时发生跳转,二ARM指令的寻址方式,寻址方式分类,寻址方式是根据指令中给出的地址码字段来实现寻找真实操作数地址的方式。
ARM处理器具有9种基本寻址方式。
1.寄存器寻址;2.立即寻址;3.寄存器移位寻址;4.寄存器间接寻址;5.基址寻址;6.多寄存器寻址;7.堆栈寻址;8.块拷贝寻址;9.相对寻址。
操作数的值在寄存器中,指令中的地址码字段指出的是寄存器编号,指令执行时直接取出寄存器值来操作。
寄存器寻址指令举例如下:
MOVR1,R2;将R2的值存入R1SUBR0,R1,R2;将R1的值减去R2的值,结果保存到R0,寻址方式分类寄存器寻址,MOVR1,R2,0xAA,立即寻址指令中的操作码字段后面的地址码部分即是操作数本身,也就是说,数据就包含在指令当中,取出指令也就取出了可以立即使用的操作数(这样的数称为立即数)。
立即寻址指令举例如下:
SUBSR0,R0,#1;R0减1,结果放入R0,并且影响标志位MOVR0,#0xFF000;将立即数0xFF000装入R0寄存器,寻址方式分类立即寻址,MOVR0,#0xFF00,0xFF00,从代码中获得数据,寄存器移位寻址是ARM指令集特有的寻址方式。
当第2个操作数是寄存器移位方式时,第2个寄存器操作数在与第1个操作数结合之前,选择进行移位操作。
寄存器移位寻址指令举例如下:
MOVR0,R2,LSL#3;R2的值左移3位,结果放入R0,;即是R0=R28ANDSR1,R1,R2,LSLR3;R2的值左移R3位,然后和R1相;“与”操作,结果放入R1,寻址方式分类寄存器移位寻址,MOVR0,R2,LSL#3,0x08,0x08,逻辑左移3位,寄存器间接寻址指令中的地址码给出的是一个通用寄存器的编号,所需的操作数保存在寄存器指定地址的存储单元中,即寄存器为操作数的地址指针。
寄存器间接寻址指令举例如下:
LDRR1,R2;将R2指向的存储单元的数据读出;保存在R1中SWPR1,R1,R2;将寄存器R1的值和R2指定的存储;单元的内容交换,寻址方式分类寄存器间接寻址,LDRR0,R2,0xAA,基址寻址就是将基址寄存器的内容与指令中给出的偏移量相加,形成操作数的有效地址。
基址寻址用于访问基址附近的存储单元,常用于查表、数组操作、功能部件寄存器访问等。
基址寻址指令举例如下:
LDRR2,R3,#0x0C;读取R3+0x0C地址上的存储单元;的内容,放入R2STRR1,R0,#-4!
;先R0=R0-4,然后把R1的值寄存;到保存到R0指定的存储单元,寻址方式分类基址寻址,LDRR2,R3,#0x0C,0xAA,将R3+0x0C作为地址装载数据,多寄存器寻址一次可传送几个寄存器值,允许一条指令传送16个寄存器的任何子集或所有寄存器。
多寄存器寻址指令举例如下:
LDMIAR1!
R2-R7,R12;将R1指向的单元中的数据读出到;R2R7、R12中(R1自动加1)STMIAR0!
R2-R7,R12;将寄存器R2R7、R12的值保;存到R0指向的存储;单元中;(R0自动加1),寻址方式分类多寄存器寻址,LDMIAR1!
R2-R4,R6,0x40000010,堆栈是一个按特定顺序进行存取的存储区,操作顺序为“后进先出”。
堆栈寻址是隐含的,它使用一个专门的寄存器(堆栈指针)指向一块存储区域(堆栈),指针所指向的存储单元即是堆栈的栈顶。
存储器堆栈可分为两种:
向上生长:
向高地址方向生长,称为递增堆栈向下生长:
向低地址方向生长,称为递减堆栈,寻址方式分类堆栈寻址,寻址方式分类堆栈寻址,0x12345678,0x12345678,堆栈指针指向最后压入的堆栈的有效数据项,称为满堆栈;堆栈指针指向下一个待压入数据的空位置,称为空堆栈。
寻址方式分类堆栈寻址,0x12345678,所以可以组合出四种类型的堆栈方式:
满递增:
堆栈向上增长,堆栈指针指向内含有效数据项的最高地址。
指令如LDMFA、STMFA等;空递增:
堆栈向上增长,堆栈指针指向堆栈上的第一个空位置。
指令如LDMEA、STMEA等;满递减:
堆栈向下增长,堆栈指针指向内含有效数据项的最低地址。
指令如LDMFD、STMFD等;空递减:
堆栈向下增长,堆栈指针向堆栈下的第一个空位置。
指令如LDMED、STMED等。
寻址方式分类堆栈寻址,多寄存器传送指令用于将一块数据从存储器的某一位置拷贝到另一位置。
如:
STMIAR0!
R1-R7;将R1R7的数据保存到存储器中。
;存储指针在保存第一个值之后增加,;增长方向为向上增长。
STMIBR0!
R1-R7;将R1R7的数据保存到存储器中。
;存储指针在保存第一个值之前增加,;增长方向为向上增长。
寻址方式分类块拷贝寻址,相对寻址是基址寻址的一种变通。
由程序计数器PC提供基准地址,指令中的地址码字段作为偏移量,两者相加后得到的地址即为操作数的有效地址。
相对寻址指令举例如下:
BLSUBR1;调用到SUBR1子程序BEQLOOP;条件跳转到LOOP标号处.LOOPMOVR6,#1.SUBR1.,寻址方式分类相对寻址,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ARM 指令 特点 寻址 方式