《wjq第4章-4.1-4.2-ARM寻址方式.ppt》由会员分享,可在线阅读,更多相关《wjq第4章-4.1-4.2-ARM寻址方式.ppt(16页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、通信工程教研室q4.1 ARM指令概述指令概述q4.2 处理器寻址方式处理器寻址方式q4.3 ARM指令集指令集q4.4 Thumb指令集指令集第第4章章 ARM7TDMI(-S)指令系统指令系统通信工程教研室4.1 ARM指令系统概述指令系统概述 指令系统指令系统是指特定计算机处理器上可执行的指令集合。是指特定计算机处理器上可执行的指令集合。ARMARM处理器是基于精简指令集计算机处理器是基于精简指令集计算机(RISC)(RISC)原理设计的,原理设计的,指令集和相关译码机制较为简单。指令集和相关译码机制较为简单。ARM7TDMI(-S)ARM7TDMI(-S)具有具有3232位位ARMAR
2、M指令集指令集和和1616位位ThumbThumb指令集。指令集。*ARMARM指令集效率高,但是代码密度低指令集效率高,但是代码密度低;*ThumbThumb指指令令集集具具有有较较高高的的代代码码密密度度,却却仍仍然然保保持持ARMARM的的大多数性能上的优势,它是大多数性能上的优势,它是ARMARM指令集的子集;指令集的子集;*所所有有的的ARMARM指指令令都都是是可可以以有有条条件件执执行行的的,而而ThumbThumb指指令令仅有一条指令具备条件执行功能;仅有一条指令具备条件执行功能;*ARMARM程程序序和和ThumbThumb程程序序可可相相互互调调用用,相相互互之之间间的的状
3、状态态切切换开销几乎为零。换开销几乎为零。通信工程教研室ARM指令集与指令集与Thumb指令集的关系指令集的关系Thumb指令集指令集具有灵活、小具有灵活、小巧的特点巧的特点ARM指令集支指令集支持持ARM核所有核所有的特性,具有高的特性,具有高效、快速的特点效、快速的特点通信工程教研室4.2 ARM处理器寻址方式处理器寻址方式寻址方式分类寻址方式分类 寻寻址址方方式式是是根根据据指指令令中中给给出出的的地地址址码码字字段段来来实实现现寻寻找找真真实操作数地址的方式。实操作数地址的方式。ARMARM处理器具有处理器具有9 9种基本寻址种基本寻址方式。方式。1.1.寄存器寻址;寄存器寻址;2.2
4、.立即寻址;立即寻址;3.3.寄存器移位寻址;寄存器移位寻址;4.4.寄存器间接寻址;寄存器间接寻址;5.5.基址寻址;基址寻址;6.6.多寄存器寻址;多寄存器寻址;7.7.堆栈寻址;堆栈寻址;8.8.块拷贝寻址;块拷贝寻址;9.9.相对寻址。相对寻址。通信工程教研室 操操作作数数的的值值在在寄寄存存器器中中,指指令令中中的的地地址址码码字字段段指指出出的的是是寄寄存存器器编编号号,指指令令执执行行时时直直接接取取出出寄寄存存器器值值来操作。寄存器寻址指令举例如下:来操作。寄存器寻址指令举例如下:MOV R1,R2 ;将将R2的值存入的值存入R1 SUB R0,R1,R2 ;将将R1的值减去的
5、值减去R2的值,结果保存到的值,结果保存到R0 0 xAA0 x55R2R14.2.1 寄存器寻址寄存器寻址MOV R1,R20 xAA通信工程教研室 立立即即寻寻址址指指令令中中的的操操作作码码字字段段后后面面的的地地址址码码部部分分即即是是操操作作数数本本身身,也也就就是是说说,数数据据就就包包含含在在指指令令当当中中,取取出出指指令令也也就就取取出出了了可可以以立立即即使使用用的的操操作作数数(这这样的数称为立即数样的数称为立即数)。立即寻址指令举例如下:。立即寻址指令举例如下:SUBSR0,R0,#1 ;R0减减1,结结果果放放入入R0,并并且且影影响标志位响标志位 MOV R0,#0
6、 xFF000;将立即数将立即数0 xFF000装入装入R0寄存器寄存器 0 x55R0MOV R0,#0 xFF00程序存储程序存储4.2.2 立即寻址立即寻址MOV R0,#0 xFF000 xFF00从代码中获得数据从代码中获得数据通信工程教研室 寄寄存存器器移移位位寻寻址址是是ARMARM指指令令集集特特有有的的寻寻址址方方式式。当当第第2 2个个操操作作数数是是寄寄存存器器移移位位方方式式时时,第第2 2个个寄寄存存器器操操作作数数在在与与第第1 1个个操操作作数数结结合合之之前前,选选择择进进行行移移位位操操作作。寄寄存存器器移移位位寻址指令举例如下:寻址指令举例如下:MOV R0
7、,R2,LSL#3 ;R2的的值值左左移移3位位,结结果果放放入入R0,;即是即是R0=R28 ANDS R1,R1,R2,LSL R3 ;R2的的值值左左移移R3位位,然然后后和和R1相相 ;“与与”操作,结果放入操作,结果放入R10 x55R0R20 x014.2.3 寄存器移位寻址寄存器移位寻址MOV R0,R2,LSL#30 x080 x08逻辑左移逻辑左移3位位通信工程教研室 寄寄存存器器间间接接寻寻址址指指令令中中的的地地址址码码给给出出的的是是一一个个通通用用寄寄存存器器的的编编号号,所所需需的的操操作作数数保保存存在在寄寄存存器器指指定定地地址址的的存存储储单单元元中中,即即寄
8、寄存存器器为为操操作作数数的的地地址址指指针针。寄存器间接寻址指令举例如下:寄存器间接寻址指令举例如下:LDR R1,R2;将将R2指向的存储单元的数据读出指向的存储单元的数据读出;保存在保存在R1中中 SWP R1,R1,R2;将将寄寄存存器器R1的的值值和和R2指指定定的的存储存储;单元的内容交换单元的内容交换 0 x55R0R2 0 x400000000 xAA0 x400000004.2.4 寄存器间接寻址寄存器间接寻址LDR R0,R20 xAA通信工程教研室 基基址址寻寻址址就就是是将将基基址址寄寄存存器器的的内内容容与与指指令令中中给给出出的的偏偏移移量量相相加加,形形成成操操作
9、作数数的的有有效效地地址址。基基址址寻寻址址用用于于访访问问基基址址附附近近的的存存储储单单元元,常常用用于于查查表表、数数组组操操作作、功功能能部部件寄存器访问等。基址寻址指令举例如下:件寄存器访问等。基址寻址指令举例如下:LDR R2,R3,#0 x0C;读取读取R3+0 x0C地址上的存储单元地址上的存储单元 ;的内容,放入的内容,放入R2 STR R1,R0,#-4!;先先R0=R0-4,然后把,然后把R1的值寄存的值寄存 ;到保存到到保存到R0指定的存储单元指定的存储单元 4.2.5 基址寻址基址寻址0 x55R2R3 0 x400000000 xAA0 x4000000CLDR R
10、2,R3,#0 x0C0 xAA将将R3+0 x0C作作为地址装载数为地址装载数据据通信工程教研室 多多寄寄存存器器寻寻址址一一次次可可传传送送几几个个寄寄存存器器值值,允允许许一一条条指指令令传传送送1616个个寄寄存存器器的的任任何何子子集集或或所所有有寄寄存存器器。多多寄寄存存器器寻寻址址指令举例如下:指令举例如下:LDMIAR1!,R2-R7,R12 ;将将R1指指向向的的单单元元中中的的数数据据读出到读出到 ;R2R7、R12中中(R1自动加自动加1)STMIAR0!,R2-R7,R12 ;将将寄寄存存器器R2R7、R12的的值保值保 ;存到存到R0指向的存储指向的存储;单元中单元中
11、 ;(R0自动加自动加1)0 x40000000R1R20 x?0 x010 x400000000 x?R3R40 x?R60 x?0 x020 x030 x040 x400000040 x400000080 x4000000C存储器存储器4.2.6 多寄存器寻址多寄存器寻址LDMIA R1!,R2-R4,R6 0 x010 x020 x030 x040 x40000000通信工程教研室 堆堆栈栈是是一一个个按按特特定定顺顺序序进进行行存存取取的的存存储储区区,操操作作顺顺序序为为“后后进进先先出出”。堆堆栈栈寻寻址址是是隐隐含含的的,它它使使用用一一个个专专门门的的寄寄存存器器(堆堆栈栈指指
12、针针)指指向向一一块块存存储储区区域域(堆堆栈栈),指指针针所所指指向向的的存存储储单单元元即即是是堆堆栈栈的的栈栈顶顶。存存储储器堆栈可分为两种:器堆栈可分为两种:向上生长:向高地址方向生长,称为递增堆栈向上生长:向高地址方向生长,称为递增堆栈向下生长:向低地址方向生长,称为递减堆栈向下生长:向低地址方向生长,称为递减堆栈4.2.7 堆栈寻址堆栈寻址通信工程教研室堆栈寻址堆栈寻址栈底栈底栈顶栈顶栈区栈区SP堆栈存堆栈存储区储区栈顶栈顶栈底栈底栈区栈区SP向下向下增长增长向上向上增长增长0 x123456780 x12345678堆栈压栈堆栈压栈堆栈压栈堆栈压栈0 x000000000 xff
13、ffffff通信工程教研室栈顶栈顶SP栈顶栈顶SP栈底栈底空堆栈空堆栈栈底栈底满堆栈满堆栈 堆堆栈栈指指针针指指向向最最后后压压入入的的堆堆栈栈的的有有效效数数据据项项,称称为为满满堆堆栈栈;堆堆栈栈指指针针指指向向下下一一个个待待压压入入数数据据的的空空位位置,称为置,称为空堆栈空堆栈。堆栈寻址堆栈寻址0 x123456780 x12345678栈顶栈顶SP0 x12345678栈顶栈顶SP压栈压栈压栈压栈通信工程教研室所以可以组合出四种类型的堆栈方式:所以可以组合出四种类型的堆栈方式:满满递递增增:堆堆栈栈向向上上增增长长,堆堆栈栈指指针针指指向向内内含含有有效效数数据据项项的的最高地址。
14、指令如最高地址。指令如LDMFALDMFA、STMFASTMFA等;等;空空递递增增:堆堆栈栈向向上上增增长长,堆堆栈栈指指针针指指向向堆堆栈栈上上的的第第一一个个空空位置。指令如位置。指令如LDMEALDMEA、STMEASTMEA等;等;满满递递减减:堆堆栈栈向向下下增增长长,堆堆栈栈指指针针指指向向内内含含有有效效数数据据项项的的最低地址。指令如最低地址。指令如LDMFDLDMFD、STMFDSTMFD等;等;空空递递减减:堆堆栈栈向向下下增增长长,堆堆栈栈指指针针向向堆堆栈栈下下的的第第一一个个空空位位置。指令如置。指令如LDMEDLDMED、STMEDSTMED等。等。堆栈寻址堆栈寻
15、址通信工程教研室 多多寄寄存存器器传传送送指指令令用用于于将将一一块块数数据据从从存存储储器器的的某某一位置拷贝到另一位置。一位置拷贝到另一位置。如:如:STMIAR0!,R1-R7;将将R1R7的的数数据据保保存存到到存存储器中。储器中。;存储指针在保存第一个值之后增加,存储指针在保存第一个值之后增加,;增长方向为向上增长。增长方向为向上增长。STMIBR0!,R1-R7;将将R1R7的的数数据据保保存存到到存存储器中。储器中。;存储指针在保存第一个值之前增加,存储指针在保存第一个值之前增加,;增长方向为向上增长。增长方向为向上增长。4.2.8 块拷贝寻址块拷贝寻址通信工程教研室 相相对对寻寻址址是是基基址址寻寻址址的的一一种种变变通通。由由程程序序计计数数器器PCPC提提供供基基准准地地址址,指指令令中中的的地地址址码码字字段段作作为为偏偏移移量量,两两者者相相加加后后得得到到的的地地址址即即为为操操作作数数的的有有效效地地址址。相相对寻址指令举例如下:对寻址指令举例如下:BLSUBR1;调用到调用到SUBR1子程序子程序BEQLOOP;条件跳转到条件跳转到LOOP标号处标号处.LOOP MOVR6,#1.SUBR1.4.2.9 相对寻址相对寻址
限制150内