第3章-ARM指令系统课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《第3章-ARM指令系统课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ARM 指令系统 课件
- 资源描述:
-
1、1第第3章章ARM指令系统指令系统 ARM指令系统概述指令系统概述 ARM指令指令的寻址方式的寻址方式 ARM指令集指令集 Thumb指令集指令集21 ARM指令系统概述指令系统概述 ARM指令集可以分为六大类,分别为:指令集可以分为六大类,分别为:数据传送指令数据传送指令数据处理指令数据处理指令跳转指令跳转指令程序状态寄存器访问指令程序状态寄存器访问指令异常中断指令。异常中断指令。协处理器指令协处理器指令31 ARM指令系统概述指令系统概述ARM指令的基本汇编格式指令的基本汇编格式 Opcode cond S Rd,Rn,operand2 助记符可选条件后缀可选标志位后缀目标寄存器第1操作数
2、寄存器第2操作数LDR R0,R1 ;R0 R1ADDS R2,R1,#1 ;R2R1+1,影响影响CPSRSUBNES R2,R1,R0;R2R1-R0 While NE,影响影响CPSR 41 ARM指令系统概述指令系统概述ARM指令的编码格式指令的编码格式指令的二进制数编码表示,通常包括目标寄存器、指令的二进制数编码表示,通常包括目标寄存器、第一操作数寄存器、第二操作数、条件、标志影响第一操作数寄存器、第二操作数、条件、标志影响位以及指令操作等的编码。位以及指令操作等的编码。51 ARM指令系统概述指令系统概述例例 数据处理类指令数据处理类指令cond0 0operand 2#opcod
3、eSRnRd3128242119161512 110目的寄存器目的寄存器第第1操作操作数数寄存器寄存器影影响状态响状态寄存器寄存器算算术术/逻辑逻辑功能功能opcode0000AND0010SUB0100ADD1111MVN(求反)操作61 ARM指令系统概述指令系统概述 ARM指令会根据指令会根据CPSR中的条件标志位判断是否需中的条件标志位判断是否需要执行。在条件满足时,指令执行,否则指令被忽要执行。在条件满足时,指令执行,否则指令被忽略。略。cond0 0operand 2#opcodeSRnRd3128242119161512 110目的寄存器目的寄存器第第1操作操作数数寄存器寄存器影
4、响状态寄存器影响状态寄存器算算术术/逻辑逻辑功能功能条件码条件码7条件码表条件码表1条件码后缀标 志含 义0000EQZ置位相等0001NEZ清零不相等0010CSC置位无符号数大于或等于0011CCC清零无符号数小于0100MIN置位负数0101PLN清零正数或零0110VSV置位溢出0111VCV清零未溢出8条件码表条件码表2条件码后缀标 志含 义1001LSC清零Z置位无符号数小于或等于1010GEN等于V带符号数大于或等于1011LTN不等于V带符号数小于1100GTZ清零且N等于V带符号数大于1101LEZ置位且N不等于V带符号数小于或等于1110AL忽略无条件执行91 ARM指令系
5、统概述指令系统概述 例例 条件执行条件执行 CMP R0,#0 BEQ SUB0 CMP R0,#1 BEQ SUB1 CMP R0,#2 BEQ SUB2SUB0:SUB1:SUB2:10第第3章章ARM指令系统指令系统 ARM指令系统概述指令系统概述 ARM指令指令的寻址方式的寻址方式 ARM指令集指令集 Thumb指令集指令集11什么是寻址方式什么是寻址方式寻找操作数地址的方式或寻找操作数的方式称为寻找操作数地址的方式或寻找操作数的方式称为寻址方式。寻址方式。如在计算如在计算2+3=?时,需先找到?时,需先找到2和和3的地址,才的地址,才能把它们取出来进行加法操作,寻找能把它们取出来进行
6、加法操作,寻找2和和3的地的地址的方式即寻址方式。址的方式即寻址方式。ARM有哪些寻址方式?有哪些寻址方式?2 ARM指令的寻址方式指令的寻址方式122 ARM指令的寻址方式指令的寻址方式ARM的寻址方的寻址方式式1)立即寻址立即寻址2)寄存器寻址寄存器寻址3)寄存器间接寻址寄存器间接寻址4)基址加偏址寻址基址加偏址寻址 5)堆栈寻址)堆栈寻址 6)块拷贝寻址)块拷贝寻址 7)相对寻址)相对寻址 131)立即寻址立即寻址 立即寻址立即寻址/立即数寻址:立即数寻址:操作数直接包含在指操作数直接包含在指令中,只要取出指令也就取到了操作数,这个令中,只要取出指令也就取到了操作数,这个操作数被称为立即
7、数。例如:操作数被称为立即数。例如:ADDR0,R0,1/*R0R01*/ADDR0,R0,0 x3f /*R0R00 x3f*/第二个操作数即为立即数,以第二个操作数即为立即数,以“”为前缀,为前缀,141)立即寻址立即寻址立即数表示立即数表示十进制另加十进制另加“0d”或或省略省略。十六进制立即数另加十六进制立即数另加“0 x”或或“&”,二进制另加二进制另加“0b”或或“2_”;立即寻址特点立即寻址特点速度快。为什么?速度快。为什么?能使用的立即数有限。为什么?能使用的立即数有限。为什么?151)立即寻址立即寻址立即寻址中立即寻址中立即数立即数范围范围有多大?有多大?32位指令码中只能用
8、位指令码中只能用12位表示立即数,最大为位表示立即数,最大为212=4096cond0 0operand 2#opcode SRnRd312827262524212019161512110目的寄存器第一操作数寄存器设置标志位码操作码16ARM采用采用8位常数循环右移偶数位得到位常数循环右移偶数位得到32位立即数位立即数,右移的位数为,右移的位数为4位二进制数的位二进制数的2倍倍(2x(015):“842”=immmed_8 ror 2xrotate_imm写汇编时程序员是否需将立即数表示为写汇编时程序员是否需将立即数表示为“842”形式?形式?cond0 0operand 2#opcode S
9、RnRd312827262524212019161512110目的寄存器第一操作数寄存器设置标志位码操作码8-bit 立即数118 70#rot171)立即寻址立即寻址汇编器完成将立即数转化为汇编器完成将立即数转化为“842”的表示形式的表示形式,例例如如MOV R0,#0 xF2 00 E3A00CF2;0 xF2 ror 2x12MOV R1,#0 x110000 E3A01811;0 x11 ror 2x8MOV R4,#12800 E3A04B4A;0 x4A ror 2x11并非所有并非所有32位常数都是合法的位常数都是合法的合法立即数:合法立即数:0 x0000F200,0 x00
10、110000,0 x00012800非法立即数:非法立即数:0 x1010,0 x00102,0 xFF100012位表示立即数汇编器汇编器DestinationCFRotate Right循环循环右移位数为2C182)寄存器寻址寄存器寻址 寄存器寻址:寄存器寻址:操作数在寄存器中,指令中的操作数在寄存器中,指令中的地址码为寄存器编号,地址码为寄存器编号,寄存器的内容寄存器的内容即即为操为操作数。执行效率较高的寻址方式。例作数。执行效率较高的寻址方式。例 ADD R0,R1,R2 /*R0R1R2*/寄存器寻址是各类微处器经常采用的寻址方寄存器寻址是各类微处器经常采用的寻址方式,是执行效率较高
11、的寻址方式。式,是执行效率较高的寻址方式。目的寄存器第一操作数寄存器第二操作数寄存器192)寄存器寻址寄存器寻址寄存器寻址中,第二寄存器操作数在与第一操寄存器寻址中,第二寄存器操作数在与第一操作数结合前可先进行移位操作,作数结合前可先进行移位操作,移位位数可以移位位数可以是一是一5位立即数或一寄存器位立即数或一寄存器R值。值。例例ADD R3,R2,R1,LSR#2 ;R3R2+R14ADD R3,R2,R1,LSR R4;R3R2+R12R4202)寄存器寻址寄存器寻址移位类型移位类型LSL(Logical Shift Left)逻辑左移逻辑左移:向左移,最后向左移,最后移出的进移出的进CF
12、,空出的最低有效位用零填充,空出的最低有效位用零填充LSR(Logical Shift Right)逻辑右移:向右移,最逻辑右移:向右移,最后移出的进后移出的进CF,空出的最高有效位用零填充,空出的最高有效位用零填充ASL(Arithmetic Shift Left)算术左移:向左移,算术左移:向左移,同同LSLLogical Shift Left(LSL)DestinationCF0DestinationCFLogical Shift Right.0212)寄存器寻址寄存器寻址ASR(Arithmetic Shift Right)算术右移:向右移算术右移:向右移,最后移出的进,最后移出的进C
13、F,空出的位用符号位填。源操,空出的位用符号位填。源操作数为正,空出的最高有效位用零填充;源操作作数为正,空出的最高有效位用零填充;源操作数为负,空出的最高有效位用数为负,空出的最高有效位用1填充。填充。DestinationCFArithmetic Shift RightSign bit shifted in222)寄存器寻址寄存器寻址ROR(Rotate Right)循环右移:移出的最低位依循环右移:移出的最低位依次填入空出的最高位,最后移出的进次填入空出的最高位,最后移出的进C标志位。标志位。RRX(Rotate Right Extended by 1 Place)带扩带扩展循环右移:寄
14、存器的内容循环右移展循环右移:寄存器的内容循环右移1位进入位进入C标标志位,空出的位用原来的志位,空出的位用原来的C标志位填充。标志位填充。DestinationCFRotate RightDestinationCFRotate Right through Carry233)寄存器间接寻址)寄存器间接寻址寄存器间接寻址:寄存器间接寻址:寄存器中的值作为操作数的寄存器中的值作为操作数的地址,而操作数本身存放在该地址所指向的存地址,而操作数本身存放在该地址所指向的存储器区中。例储器区中。例 LDR R0,R1;R0R1 STR R0,R1;R1R0 第一条指令将第一条指令将R1的值为地址的存储器中
15、的数据传送的值为地址的存储器中的数据传送到到R0中。第二条指令将中。第二条指令将R0的值传送到的值传送到R1的值为地址的值为地址的存储器中。的存储器中。244)基址变址寻址)基址变址寻址基址变址寻址:基址变址寻址:将寄存器(基址寄存器)的内容与指将寄存器(基址寄存器)的内容与指令中给出的地址偏移量相加,得到操作数的有效地址令中给出的地址偏移量相加,得到操作数的有效地址,操作数存放在该地址指向的存储区中。如:,操作数存放在该地址指向的存储区中。如:LDR R0,R1,4 ;R0R14LDR R0,R1,4!;!;R0 R14,R1R14LDR R0,R1,4 ;R0R1,R1R14LDR R0,
16、R1,R2 ;R0 R1R2变址寻址方式常用于访问某基地址附近的地址单元。变址寻址方式常用于访问某基地址附近的地址单元。前变址自动变址后变址255)堆栈寻址)堆栈寻址 操作数在堆栈中,堆栈是一块用于保存数据的连续操作数在堆栈中,堆栈是一块用于保存数据的连续内存区,按先进后出内存区,按先进后出FILO(First In Last Out)的)的顺序进行存取操作,使用一个称作堆栈指针的专用顺序进行存取操作,使用一个称作堆栈指针的专用寄存器指示当前的操作位置。根据堆栈指针指向位寄存器指示当前的操作位置。根据堆栈指针指向位置的方式可分为如下两种堆栈:置的方式可分为如下两种堆栈:满堆栈(满堆栈(Full
17、 Stack):当堆栈指针指向最后压入堆栈或:当堆栈指针指向最后压入堆栈或第一个要读出的数据时。第一个要读出的数据时。空堆栈(空堆栈(Empty Stack):):当堆栈指针指向最后压入堆栈当堆栈指针指向最后压入堆栈的数据的上的数据的上/下一个空位或第一个要读出的数据上下一个空位或第一个要读出的数据上/下一个下一个空位时。空位时。12SP满满12SP空空265)堆栈寻址)堆栈寻址根据堆栈指针变化的方式可分为如下两种堆栈根据堆栈指针变化的方式可分为如下两种堆栈递增堆栈(递增堆栈(Ascending Stack):当堆栈由低地:当堆栈由低地址向高地址生成时,称为递增堆栈址向高地址生成时,称为递增堆
18、栈递减堆栈(递减堆栈(Decending Stack):):当堆栈由高地址当堆栈由高地址向低地址生成时,称为递减堆栈向低地址生成时,称为递减堆栈12SPBase,LowHigh递增堆栈递增堆栈SP12Base,HighLow递减堆栈递减堆栈275)堆栈寻址)堆栈寻址堆栈的四种工作方式堆栈的四种工作方式 满递增堆栈:堆栈指针指向最后压入或第一个要满递增堆栈:堆栈指针指向最后压入或第一个要读出的数据,且由低地址向高地址生长。读出的数据,且由低地址向高地址生长。满递减堆栈:堆栈指针指向最后压入或第一个要满递减堆栈:堆栈指针指向最后压入或第一个要读出的数据,且由高地址向低地址生长。读出的数据,且由高地
19、址向低地址生长。12SPBase,LowHigh满递增堆栈满递增堆栈SP12Base,HighLow满递减堆栈满递减堆栈285)堆栈寻址)堆栈寻址空递增堆栈:堆栈指针指向上一个将要放入数据空递增堆栈:堆栈指针指向上一个将要放入数据的空位或第一个将要读出的数据的上一个空位,的空位或第一个将要读出的数据的上一个空位,且由低地址向高地址生长。且由低地址向高地址生长。空递减堆栈:堆栈指针指向下一个将要放入数据空递减堆栈:堆栈指针指向下一个将要放入数据的空位或第一个将要读出的数据的下一个空位,的空位或第一个将要读出的数据的下一个空位,且由高地址向低地址生长且由高地址向低地址生长12SPBase,LowH
20、igh空递增堆栈空递增堆栈12SPBase,HighLow空递减堆栈空递减堆栈295)堆栈寻址)堆栈寻址堆栈的工作方式一般在处理器设计时就定好堆栈的工作方式一般在处理器设计时就定好了的,用户不能更改。了的,用户不能更改。ARM堆栈的工作方式为堆栈的工作方式为满递减堆栈满递减堆栈305)堆栈寻址)堆栈寻址例例ARMSTMFD SP!r0,r1,r3-r5;r0,r1,r3-r5入栈入栈LDMFD SP!r0,r1,r3-r5;r0,r1,r3-r5出栈出栈ThumbPUSH r0,r1,r3-r5;r0,r1,r3-r5入栈入栈POP r0,r1,r3-r5;r0,r1,r3-r5出栈出栈316
21、)块拷贝寻址)块拷贝寻址/多寄存器寻址多寄存器寻址多寄存器寻址中,用一条指令把存储器中的一块数据多寄存器寻址中,用一条指令把存储器中的一块数据加载到多个寄存器,或把多个寄存器中的内容保存到加载到多个寄存器,或把多个寄存器中的内容保存到存储器中。寻址操作中的寄存器可以是存储器中。寻址操作中的寄存器可以是R0R15或其子或其子集。集。LDM/STM加下列后缀即成为多寄存器寻址指令加下列后缀即成为多寄存器寻址指令IA(Increment After):操作完成后地址增操作完成后地址增IB(Increment Before):操作完成前地址增:操作完成前地址增DA(Decrement After):操
22、作完成后地址减:操作完成后地址减DB(Decrement Before):操作完成前地址减:操作完成前地址减326)块拷贝寻址)块拷贝寻址/多寄存器寻址多寄存器寻址例子例子STMIA r9!,r0,r1,r5;r0/1/5存入存入r9所指内存,先存后加所指内存,先存后加STMIB r9!,r0,r1,r5;r0/1/5存存入入r9所指内存,先加后存所指内存,先加后存r5r1r9r0r9STMIA r9!,r0,r1,r51000100c1018r5r1r0r9r9STMIB r9!,r0,r1,r51000100c101833STMDA r9!,r0,r1,r5;r0/1/5存入存入r9所指内
23、存,先存后减所指内存,先存后减STMDB r9!,r0,r1,r5;r0/1/5存入存入r9所指内存,先减后存所指内存,先减后存r1r5r9STMDA r9!,r0,r1,r5r0r91000100c1018r5r9STMDB r9!,r0,r1,r5r1r0r91000100c1018347)相对寻址)相对寻址 相对寻址相对寻址:以程序计数器以程序计数器PC的当前值为基地址,指令的当前值为基地址,指令中的地址标号作为偏移量,两者相加得操作数的有效中的地址标号作为偏移量,两者相加得操作数的有效地址。以下程序段完成子程序的调用和返回,跳转指地址。以下程序段完成子程序的调用和返回,跳转指令令BL采
24、用了相对寻址方式:采用了相对寻址方式:BL NEXT ;跳转到子程序;跳转到子程序NEXT处执行处执行 ;返回到此返回到此 ;当前当前PC ;NEXT ;子程序入口;子程序入口 MOV PC,LR ;从子程序返回;从子程序返回 PC+NEXTPC PC-4LR 35第第3章章ARM指令系统指令系统 ARM指令系统概述指令系统概述 ARM指令指令的寻址方式的寻址方式 ARM指令集指令集 Thumb指令集指令集363 ARM指令集指令集 1)数据传送指令数据传送指令2)数据处理指令数据处理指令3)状态寄存器访问指令状态寄存器访问指令4)跳转移指令跳转移指令5)异常产生指令异常产生指令6)协处理器指
25、令协处理器指令 37数据传送指令数据传送指令数据传送是指数据在寄存器与存储器之间的数据传送是指数据在寄存器与存储器之间的传送。其中,从存储器到寄存器的传送称为传送。其中,从存储器到寄存器的传送称为加载(加载(Load),从寄存器到存储器的传送称),从寄存器到存储器的传送称为存储(为存储(Store),故数据传送指令也称为加),故数据传送指令也称为加载载/存储(存储(Load/Store)指令或)指令或存储器访问指存储器访问指令令。ARM处理器采取统一编址方式进行编址,即处理器采取统一编址方式进行编址,即所有所有I/O都和存储单元一样,同属都和存储单元一样,同属ARM的地址的地址空间,与存储器一
展开阅读全文