第4讲指令系统精选PPT.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《第4讲指令系统精选PPT.ppt》由会员分享,可在线阅读,更多相关《第4讲指令系统精选PPT.ppt(85页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第4讲指令系统讲指令系统第1页,本讲稿共85页嵌入式系统及开发应用嵌入式系统及开发应用第第3 3讲讲 ARM ARM 指令系统指令系统第2页,本讲稿共85页本讲提要1 13 32 25 54 46 6ARM 指令格式寻址方式ADS 集成开发环境ARM 指令集Tumb 指令集ARM 汇编程序设计基础第3页,本讲稿共85页ARM 指令集的特点l向后兼容:新版本增加指令,并保持指令向向后兼容:新版本增加指令,并保持指令向后兼容;后兼容;lLoad-store Load-store 结构结构*load/store load/store 从存储器中读某个值从存储器中读某个值,操作完后再操作完后再将其放
2、回存储器中将其放回存储器中只对存放在寄存器的数据进行处理;只对存放在寄存器的数据进行处理;对于存储器中的数据,只能使用对于存储器中的数据,只能使用load/storeload/store指令进指令进行存取行存取l条件执行:所有指令都可条件执行条件执行:所有指令都可条件执行第4页,本讲稿共85页指令长度l指令集可以是以下任一种指令集可以是以下任一种32 bits 32 bits 长长 (ARM(ARM状态状态)16 bits 16 bits 长长 (Thumb(Thumb 状态状态)lARM7TDMI ARM7TDMI 支持支持3 3种数据类型种数据类型字节字节 (8-bit)(8-bit)半字
3、半字 (16-bit)16-bit)字字 (32-bit)(32-bit)l字必须被排成字必须被排成4 4个字节边界对齐个字节边界对齐,半字必须被排半字必须被排列成列成2 2个字节边界对齐个字节边界对齐 第5页,本讲稿共85页指令格式l指令格式指令格式u3 3 地址指令格式地址指令格式 在在ARMARM状态中使用状态中使用u例例指令语法指令语法目标寄存器目标寄存器(Rd)源寄存器源寄存器1(Rn)源寄存器源寄存器2(Rm)ADD r3,r1,r2r3r1r2第6页,本讲稿共85页ARM指令编码格式Cond指令执行的条件编码指令执行的条件编码Opcode指令操作符编码指令操作符编码S决定指令的操
4、作是否影响决定指令的操作是否影响CPSR的值的值Rd操作目标寄存器编码操作目标寄存器编码Rn包含第一操作数的寄存器包含第一操作数的寄存器编码编码Shifter_operand表示第二操作数表示第二操作数cond001opcodesRnRdShifter_operand 31 28 27 25 24 21 20 19 16 15 12 11 8 7 0第7页,本讲稿共85页ARM指令格式第8页,本讲稿共85页条件码标志l任何数据处理指令都可以设置条件码任何数据处理指令都可以设置条件码 (N,Z,V,(N,Z,V,and C)and C)适用于除比较操作外的所有数据处理指令适用于除比较操作外的所有
5、数据处理指令特殊的请求必须在汇编语言中实现特殊的请求必须在汇编语言中实现,这种请求是通过这种请求是通过把把”S S”增加到选择代码中指定的增加到选择代码中指定的l算术操作设置所有的标志位算术操作设置所有的标志位(N,Z,C,V)(N,Z,C,V)l逻辑和移位操作设置逻辑和移位操作设置 N and Z N and Zu当无移位操作时当无移位操作时,保存保存V V和和C,C,或根据移位操作设置或根据移位操作设置ADDS r2,r2,r0;carry out to C第9页,本讲稿共85页lARM指令可以通过添加适当的条件码指令可以通过添加适当的条件码后缀后缀来达到条件执行的来达到条件执行的目的。目
6、的。这样可以提高代码密度,减少分支跳转指令数目,提高性能。这样可以提高代码密度,减少分支跳转指令数目,提高性能。CMP r3,#0 CMP r3,#0 BEQ skip ADDNE r0,r1,r2 ADD r0,r1,r2 skipl默认情况下,数据处理指令不影响默认情况下,数据处理指令不影响程序状态寄存器程序状态寄存器的条件码标的条件码标志位,但可以选择通过添加志位,但可以选择通过添加“S”来影响标志位。来影响标志位。CMP不需不需要增加要增加“S”就可改变相应的标志位。就可改变相应的标志位。loop SUBS r1,r1,#1 BNE loop条件执行及标志位*如果 Z标志清零则跳转R1
7、减1,并设置标志位 条件执行不带条件第10页,本讲稿共85页Condition Codes 不等于(Not equal)无符号的大于或等于无符号的小于负数(Minus)等于(Equal)溢出(Overflow)没溢出无符号的大于无符号的小于或大于正数或零小于(Less Than)大于(Greater Than)小于等于总是执行(Always)大于等于EQNECS/HSCC/LOPLVSHILSGELTGTLEALMIVCSuffix描述Z=0C=1C=0Z=1测试的标志位N=1N=0V=1V=0C=1&Z=0C=0 or Z=1N=VN!=VZ=0&N=VZ=1 or N=!Vl下表为所有可能
8、的条件码:下表为所有可能的条件码:注意注意:AL为默认状态,不需要单独指出为默认状态,不需要单独指出第11页,本讲稿共85页条件执行示例l一系列的指令都使用条件指令一系列的指令都使用条件指令if(a=0)func(1);CMP r0,#0MOVEQ r0,#1;把把func()函数的参数赋给函数的参数赋给r0 BLEQ funcl置标志位,再使用不同的条件码置标志位,再使用不同的条件码if(a=0)x=0 ;r0:a,r1:x if(a0)x=1;CMP r0,#0MOVEQ r1,#0MOVGT r1,#1l使用条件比较指令使用条件比较指令if(a=4|a=10)x=0;a为为4或或10才对
9、才对x赋值赋值CMP r0,#4CMPNE r0,#10MOVEQ r1,#0第12页,本讲稿共85页条件执行所有的所有的ARM指令都可以指令都可以条条件件执行行指令的指令的执行行与与否取否取决决于于CPSR寄存器的寄存器的 N,Z,C and V标志位志位所有的所有的Thumb指令都可以解指令都可以解压成全部成全部条条件指令件指令Condition Field in instruction0000=EQ-Z set(equal)0001=NE-Z clear(not equal)0010=CS-C set(unsigned higher or same)0011=CC-C clear(uns
10、igned lower)0100=MI-N set(negative)0101=PL-N clear(positive or zero)0110=VS-V set(overflow)0111=VC-V clear(no overflow)1000=HI-C set and Z clear(unsigned higher)1001=LS-C clear or Z set(unsigned lower or same)1010=GE-N set and V set,or N clear and V clear(greater or equal)1011=LT-N set and V clear,o
11、r N clear and V set(less than)1100=GT-Z clear,and either N set and V set,or N clear and V clear(greater than)1101=LE-Z set,or N set and V clear,or N clear and V set(less than or equal)1110=AL-always1111=NV-never第13页,本讲稿共85页本讲提要1 13 32 25 54 46 6ARM 指令格式寻址方式ADS 集成开发环境ARM 指令集Tumb 指令集ARM 汇编程序设计基础第14页,本
12、讲稿共85页寻址方式寻址方式l2.6.1 基本寻址方式基本寻址方式l寻址方式是根据指令中给出的地址码字段来实寻址方式是根据指令中给出的地址码字段来实现寻找真实操作数地址的方式,现寻找真实操作数地址的方式,ARM处理器有处理器有9 种基本寻址方式。种基本寻址方式。第15页,本讲稿共85页寻址方式寻址方式l1寄存器寻址操作数的值在寄存器中,指令中的地址码字段给操作数的值在寄存器中,指令中的地址码字段给出的是寄存器编号,寄存器的内容是操作数,出的是寄存器编号,寄存器的内容是操作数,指令执行时直接取出寄存器值操作。指令执行时直接取出寄存器值操作。例如指令:例如指令:lMOV R1,R2 ;R1R2 l
13、SUB R0,R1,R2 ;R0R1-R2第16页,本讲稿共85页寻址方式寻址方式l2立即寻址l在立即寻址指令中数据就包含在指令当中,立即寻址指令的操在立即寻址指令中数据就包含在指令当中,立即寻址指令的操作码字段后面的地址码部分就是操作数本身,取出指令也就取作码字段后面的地址码部分就是操作数本身,取出指令也就取出了可以立即使用的操作数(也称为立即数)。立即数要以出了可以立即使用的操作数(也称为立即数)。立即数要以“”为前缀,表示为前缀,表示16进制数值时以进制数值时以“0 x”表示。表示。l例如指令:例如指令:lADD R0,R0,#1 ;R0R0+1lMOV R0,#0 xff00 ;R00
14、 xff00第17页,本讲稿共85页寻址方式寻址方式l3寄存器移位寻址l寄存器移位寻址是寄存器移位寻址是ARM指令集特有的寻址方式。第指令集特有的寻址方式。第2个寄存器操作数在与第个寄存器操作数在与第1个操作数结合之前,先进行移位操作。个操作数结合之前,先进行移位操作。l例如指令:例如指令:lMOV R0,R2,LSL#3 ;R2的值左移的值左移3位,结果放入位,结果放入R0,即,即R0=R2*8lANDS R1,R1,R2,LSL R3 ;R2的值左移的值左移R3位,然后和位,然后和R1相与操作,结相与操作,结果放入果放入R1l可采用的移位操作如下:可采用的移位操作如下:lLSL:逻辑左移(
15、:逻辑左移(Logical Shift Left),寄存器中字的低端空出的位补),寄存器中字的低端空出的位补0。第18页,本讲稿共85页寻址方式寻址方式lLSR:逻辑右移(:逻辑右移(Logical Shift Right),寄存器中字的高),寄存器中字的高端空出的位补端空出的位补0。lASR:算术右移(:算术右移(Arithmetic Shift Right),移位过程中),移位过程中保持符号位不变,即如果源操作数为正数,则字的高端空出保持符号位不变,即如果源操作数为正数,则字的高端空出的位补的位补0,否则补,否则补1lROR:循环右移(:循环右移(Rotate Right),由字的低端移出
16、的位填),由字的低端移出的位填入字的高端空出的位入字的高端空出的位lRRX:带扩展的循环右移(:带扩展的循环右移(Rotate Right extended by 1 place),操作数右移一位,高端空出的位用原操作数右移一位,高端空出的位用原C 标志值填充。标志值填充。l各移位操作过程如图各移位操作过程如图2.6.1所示。所示。第19页,本讲稿共85页寻址方式寻址方式第20页,本讲稿共85页寻址方式寻址方式l4寄存器间接寻址l指令中的地址码给出的是一个通用寄存器编号,所需要的操指令中的地址码给出的是一个通用寄存器编号,所需要的操作数保存在寄存器指定地址的存储单元中,即寄存器为操作作数保存在
17、寄存器指定地址的存储单元中,即寄存器为操作数的地址指针,操作数存放在存储器中。数的地址指针,操作数存放在存储器中。l例如指令例如指令:lLDR R0,R1 ;R0R1(将(将R1中的数值作为地址,取出中的数值作为地址,取出此地址中的数据保存在此地址中的数据保存在R0中)中)lSTR R0,R1 ;R1 R0第21页,本讲稿共85页寻址方式寻址方式l5变址寻址l变址寻址是将基址寄存器的内容与指令中给出的偏移量相加,变址寻址是将基址寄存器的内容与指令中给出的偏移量相加,形成操作数的有效地址,变址寻址用于访问基址附近的存储形成操作数的有效地址,变址寻址用于访问基址附近的存储单元,常用于查表,数组操作
18、,功能部件寄存器访问等。单元,常用于查表,数组操作,功能部件寄存器访问等。l例如指令:例如指令:lLDR R2,R3,#4 ;R2R3+4(将(将R3中的数值加中的数值加4作为作为地址,取出此地址的数值保存在地址,取出此地址的数值保存在R2 中)中)lSTR R1,R0,#-2 ;R0-2 R1(将(将R0中的数值减中的数值减2 作作为地址,把为地址,把R1中的内容保存到此地址位置)中的内容保存到此地址位置)第22页,本讲稿共85页寻址方式寻址方式l6多寄存器寻址l采用多寄存器寻址方式,一条指令可以完成多个寄存器值采用多寄存器寻址方式,一条指令可以完成多个寄存器值的传送,这种寻址方式用一条指令
19、最多可以完成的传送,这种寻址方式用一条指令最多可以完成16个寄存个寄存器值的传送。器值的传送。例如指令:例如指令:LDMIA R0,R1,R2,R3,R4 ;R1R0 ;R2R0+4 ;R3R0+8 ;R4R0+12 第23页,本讲稿共85页寻址方式寻址方式l7堆栈寻址l堆栈是一种数据结构,堆栈是特定顺序进行存取的存储区,堆栈是一种数据结构,堆栈是特定顺序进行存取的存储区,操作顺序分为操作顺序分为“后进先出后进先出”和和“先进后出先进后出”,堆栈寻址时,堆栈寻址时隐含的,它使用一个专门的寄存器(堆栈指针)指向一块隐含的,它使用一个专门的寄存器(堆栈指针)指向一块存储区域(堆栈),指针所指向的存
20、储单元就是堆栈的栈存储区域(堆栈),指针所指向的存储单元就是堆栈的栈顶。存储器生长堆栈可分为两种:顶。存储器生长堆栈可分为两种:l向上生长:向高地址方向生长,称为递增堆栈向上生长:向高地址方向生长,称为递增堆栈(Ascending Stack)。)。l向下生长:向低地址方向生长,称为递减堆栈向下生长:向低地址方向生长,称为递减堆栈(Decending Stack)。)。第24页,本讲稿共85页寻址方式寻址方式l堆栈指针指向最后压入的堆栈的有效数据项,称为满堆栈堆栈指针指向最后压入的堆栈的有效数据项,称为满堆栈(Full Stack);堆栈指针指向下一个要放入的空位置,称为空);堆栈指针指向下一
21、个要放入的空位置,称为空堆栈(堆栈(Empty Stack)。)。l这样就有四种类型的堆栈工作方式,这样就有四种类型的堆栈工作方式,ARM微处理器支持这四微处理器支持这四种类型的堆栈工作方式,即:种类型的堆栈工作方式,即:l 满递增堆栈满递增堆栈:堆栈指针指向最后压入的数据,且由低地址向高堆栈指针指向最后压入的数据,且由低地址向高地址生成。如指令地址生成。如指令LDMFALDMFA,STMFA STMFA 等。等。l 满递减堆栈满递减堆栈:堆栈指针指向最后压入的数据,且由高地址堆栈指针指向最后压入的数据,且由高地址向低地址生成。如指令向低地址生成。如指令LDMFDLDMFD,STMFD STM
22、FD 等。等。第25页,本讲稿共85页寻址方式寻址方式l 空递增堆栈空递增堆栈:堆栈指针指向下一个将要放入数堆栈指针指向下一个将要放入数据的空位置,且由低地址向高地址生成。如指据的空位置,且由低地址向高地址生成。如指令令LDMEALDMEA,STMEA STMEA 等。等。l 空递减堆栈空递减堆栈:堆栈指针指向下一个将要放入数堆栈指针指向下一个将要放入数据的空位置,且由高地址向低地址生成。如指据的空位置,且由高地址向低地址生成。如指令令LDMEDLDMED,STMED STMED 等等。第26页,本讲稿共85页本讲提要1 13 32 25 54 46 6ARM 指令格式寻址方式ADS 集成开发
23、环境ARM 指令集Tumb 指令集ARM 汇编程序设计基础第27页,本讲稿共85页ARM 指令分类l数据传送指令数据传送指令 把存储器的值拷贝到寄存器把存储器的值拷贝到寄存器中中 (loadload)or)or 把寄存器中的值拷贝到存储把寄存器中的值拷贝到存储器中器中(storestore)l数据处理指令数据处理指令 使用和改变寄存器的值使用和改变寄存器的值l跳转指令跳转指令 分支分支分支和链接分支和链接,保存返回的地址保存返回的地址,以恢复最先的次序以恢复最先的次序l协处理器指令协处理器指令l杂项指令杂项指令异常产生指令异常产生指令程序状态寄存器(程序状态寄存器(PSRPSR)处理指令)处理
24、指令第28页,本讲稿共85页存储器访问指令存储器访问指令第29页,本讲稿共85页数据传送指令-1l单指令传送单指令传送 (LDR,STR)(LDR,STR)u单字单字(32bit),(32bit),半字半字(1(16 bit)6 bit)以及字节以及字节(8 bit)(8 bit)传送传送u寻址寻址u寄存器偏移寄存器偏移u地址地址 =基址基址 寄存器偏移寄存器偏移u立即数偏移立即数偏移u地址地址=基址基址 立即数常数立即数常数u后变址后变址Post-indexingPost-indexing:modify address after use:modify address after useu前
25、变址前变址Pre-indexing:modify address before usePre-indexing:modify address before useu回写回写u如果可能如果可能,更新基址寄存器更新基址寄存器第30页,本讲稿共85页单寄存器传送指令LDR把一个把一个字字装入一个寄存器装入一个寄存器Rdmem32addressSTR从一个寄存器保存一个从一个寄存器保存一个字字Rdmem32addressLDRB把一个把一个字节字节装入一个寄存器装入一个寄存器Rdmem8addressSTRB从一个寄存器保存一个从一个寄存器保存一个字节字节Rdmem8addressLDRH把一个把一个
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 指令系统 精选 PPT
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内