《第3章指令集寻址方式PPT讲稿.ppt》由会员分享,可在线阅读,更多相关《第3章指令集寻址方式PPT讲稿.ppt(50页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第3章指令集章指令集寻址方式址方式第1页,共50页,编辑于2022年,星期一第第3章章ARM指令集寻址方式指令集寻址方式ARM指令寻址方式可分为四大类:指令寻址方式可分为四大类:数据处理指令寻址数据处理指令寻址Load/Store指令的寻址指令的寻址批量批量Load/Store指令的寻址指令的寻址协处理指令寻址。协处理指令寻址。第2页,共50页,编辑于2022年,星期一内容提要内容提要31ARM指令的编码格式指令的编码格式32数据处理指令寻址方式数据处理指令寻址方式33Load/Store指令寻址指令寻址34批量批量Load/Store指令寻址方式指令寻址方式35协处理器指令寻址方式协处理器
2、指令寻址方式第3页,共50页,编辑于2022年,星期一31ARM指令的编码格式指令的编码格式n一般编码格式一般编码格式n指令条件码指令条件码第4页,共50页,编辑于2022年,星期一一般编码格式一般编码格式n每条每条ARM指令占有指令占有4个字节,其指令长度为个字节,其指令长度为32位位cond(bit31:28)指令执行的条件码;type(bit27:26)指令类型码 cond(bit31:28)指令执行的条件码;type(bit27:26)指令类型码 cond(bit31:28)指令执行的条件码;type(bit27:26)指令类型码 cond(bit31:28)指令执行的条件码;type
3、(bit27:26)指令类型码 cond(bit31:28)指令执行的条件码;type(bit27:26)指令类型码 cond(bit31:28)指令执行的条件码;type(bit27:26)指令类型码 cond(bit31:28)指令执行的条件码指令执行的条件码type(bit27:26)指令类型码指令类型码 opcode(bit24:21)指令操作码;指令操作码;S(bit20)决定指令的操作结果是否影响决定指令的操作结果是否影响CPSR;Rn(bit19:16)包含第一个操作数的寄存器编码;包含第一个操作数的寄存器编码;Rd(bit15:12)目标寄存器编码;目标寄存器编码;Operan
4、d2(bit11:0)指令第二个操作数。指令第二个操作数。第5页,共50页,编辑于2022年,星期一nARM汇编指令语法格式:汇编指令语法格式:nS,第6页,共50页,编辑于2022年,星期一指令条件码指令条件码n0000EQ相等相等Z=1n0001NE不相等不相等Z=0n0010CS/HS无符号大于等于无符号大于等于C=1n0011CC/LO无等号小于无等号小于C=0n0100MI负数负数N=1n0101PL非负数非负数N=0n0110VS上溢出上溢出V=1n0111VC没有上溢出没有上溢出V=0n1000HI无符号数大于无符号数大于C=1且且Z=0n1001LS无符号小于等于无符号小于等于
5、C=0或或Z=1n1010GE有符号数大于等于有符号数大于等于 N=1且且V=1或或N=0且且V=0n1011LT有符号数小于有符号数小于N=1且且V=0或或N=0且且V=1n1100GT有符号数大于有符号数大于Z=0且且N=Vn1101LE有符号数小于有符号数小于/等于等于Z=1或或N!=Vn1110AL无条件执行无条件执行第7页,共50页,编辑于2022年,星期一3.2数据处理指令寻址方式数据处理指令寻址方式n数据处理指令第数据处理指令第2操作数的构成方式操作数的构成方式n具体寻址类型具体寻址类型第8页,共50页,编辑于2022年,星期一数据处理指令第数据处理指令第2操作数的构成方式操作数
6、的构成方式n立即数方式立即数方式n每个立即数由一个每个立即数由一个8位的常数进行位的常数进行32位循环位循环右移偶数位得到,其中循环右移的位数由一右移偶数位得到,其中循环右移的位数由一个个4位二进制的两倍表示。即:位二进制的两倍表示。即:n=immed_8进行进行32位循环右位循环右移(移(2*rotate_4)位)位第9页,共50页,编辑于2022年,星期一n寄存器方式寄存器方式n操作数即为寄存器的数值操作数即为寄存器的数值n如如:MOVR3,R2nADDR0,R1,R2第10页,共50页,编辑于2022年,星期一n寄存器移位方式寄存器移位方式n操作数为寄存器的数值做相应的移位而得到。操作数
7、为寄存器的数值做相应的移位而得到。在在ARM指令中移位操作包括逻辑左移、逻指令中移位操作包括逻辑左移、逻辑右移、算术左移、算术右移、循环右移和辑右移、算术左移、算术右移、循环右移和带扩展的循环右移带扩展的循环右移第11页,共50页,编辑于2022年,星期一第12页,共50页,编辑于2022年,星期一具体寻址类型具体寻址类型n1第二操作数为立即数第二操作数为立即数n汇编语法格式:汇编语法格式:#第13页,共50页,编辑于2022年,星期一n2第二操作数为寄存器第二操作数为寄存器n汇编语法格式:汇编语法格式:第14页,共50页,编辑于2022年,星期一n3第二操作数为寄存器移位方式,且移位的第二操
8、作数为寄存器移位方式,且移位的位数为一个位数为一个5位的立即数位的立即数n汇编语法格式:汇编语法格式:,#第15页,共50页,编辑于2022年,星期一n4第二操作数为寄存器移位方式,且移位数第二操作数为寄存器移位方式,且移位数值放在寄存器中值放在寄存器中n汇编语法格式:汇编语法格式:,第16页,共50页,编辑于2022年,星期一n5第二操作数为寄存器进行第二操作数为寄存器进行RRX移位得到移位得到n汇编语法格式:汇编语法格式:,RRX第17页,共50页,编辑于2022年,星期一3.3Load/Store指令寻址指令寻址nLoad/Store指令是对内存进行存储指令是对内存进行存储/加载数据加载
9、数据操作的指令,根据访问的数据格式的不同,操作的指令,根据访问的数据格式的不同,将这类指令的寻址分为字、无符号字节的将这类指令的寻址分为字、无符号字节的Load/Store指令寻址和半字、有符号字节指令寻址和半字、有符号字节Load/Store指令寻址两大类。指令寻址两大类。第18页,共50页,编辑于2022年,星期一n数据处理指令第二操作数的构成方式是寻址数据处理指令第二操作数的构成方式是寻址部分重点掌握的内容部分重点掌握的内容,具本参考具本参考教材教材ARM嵌嵌入式系统结构与编程入式系统结构与编程第第3章章3.2节节第19页,共50页,编辑于2022年,星期一地址计算方法地址计算方法n1寄
10、存器间接寻址寄存器间接寻址n寄存器间接寻址就是以寄存器中的值作为操作寄存器间接寻址就是以寄存器中的值作为操作数的地址,而操作数本身存放在存储器中。例如以下数的地址,而操作数本身存放在存储器中。例如以下指令:指令:nLDRR0,R1;R0R1nSTRR0,R1;R1R0第20页,共50页,编辑于2022年,星期一n2.基址加变址寻址基址加变址寻址n前变址法前变址法:基地址寄存器中的值和地址偏移:基地址寄存器中的值和地址偏移量先作加减运算,生成的操作数作为内存访量先作加减运算,生成的操作数作为内存访问的地址。问的地址。n后变址法后变址法:将基地址寄存器中的值直接作为:将基地址寄存器中的值直接作为内
11、存访问的地址进行操作,内存访问完毕后内存访问的地址进行操作,内存访问完毕后基地址寄存器中的值和地址偏移量作加减运基地址寄存器中的值和地址偏移量作加减运算,并更新基地址寄存器。算,并更新基地址寄存器。第21页,共50页,编辑于2022年,星期一字、无符号字节寻址字、无符号字节寻址n汇编指令语法格式为:汇编指令语法格式为:nLDRBT,nSTRBT,第22页,共50页,编辑于2022年,星期一第23页,共50页,编辑于2022年,星期一n1Addressing_mode中的偏移量为立即数中的偏移量为立即数n前变址不回写形式:前变址不回写形式:,#+/-n前变址回写形式:前变址回写形式:,#+/-!
12、n后变址回写形式:后变址回写形式:,#+/-第24页,共50页,编辑于2022年,星期一n偏移量为立即数的指令编码类型偏移量为立即数的指令编码类型nW P汇编语法格式汇编语法格式n01,#+/-n10,#+/-n11,#+/-!第25页,共50页,编辑于2022年,星期一n2Addressing_mode中的偏移量为寄存器中的偏移量为寄存器的值的值n前变址不回写形式前变址不回写形式:,+/-n前变址回写形式:前变址回写形式:,+/-!n后变址回写形式:后变址回写形式:,+/-第26页,共50页,编辑于2022年,星期一n偏移量为寄存器的指令编码类型对应关系偏移量为寄存器的指令编码类型对应关系n
13、W P汇编语法格式汇编语法格式n01,+/-n10,+/-n11,+/-!第27页,共50页,编辑于2022年,星期一n3Addressing_mode中的偏移量通过寄存器移位得到中的偏移量通过寄存器移位得到n前变址不回写形式:前变址不回写形式:,+/-,#shift_amountn前变址回写形式:前变址回写形式:,+/-,#shift_amount!n后变址回写形式:后变址回写形式:,+/-,#shift_amount第28页,共50页,编辑于2022年,星期一n偏移量为移位寄存器的指令编码类型对应关系偏移量为移位寄存器的指令编码类型对应关系nW P汇编语法格式汇编语法格式n01,+/-,#
14、shift_amountn10,+/-,#shift_amountn11,+/-,#shift_amount!第29页,共50页,编辑于2022年,星期一半字、有符号字节寻址半字、有符号字节寻址n这类指令可用来加载有符号字节、加载有符这类指令可用来加载有符号字节、加载有符号半字、加载号半字、加载/存储无符号半字。存储无符号半字。nLoad/Store指令对半字、有符号字节操作指指令对半字、有符号字节操作指令编码格式如下:令编码格式如下:第30页,共50页,编辑于2022年,星期一n加载有符号字节到寄存器:加载有符号字节到寄存器:nLDRSB,n加载有符号半字到寄存器:加载有符号半字到寄存器:n
15、LDRSH,n加载无符号半字到寄存器:加载无符号半字到寄存器:nLDRH,n存储无符号半字到内存:存储无符号半字到内存:nSTRH,第31页,共50页,编辑于2022年,星期一n1Addressing_mode中的偏移量为立即数中的偏移量为立即数n前变址不回写形式:前变址不回写形式:,#+/-n前变址回写形式:前变址回写形式:,#+/-!n后变址回写形式:后变址回写形式:,#+/-第32页,共50页,编辑于2022年,星期一n偏移量为立即数的指令编码类型偏移量为立即数的指令编码类型nW P汇编语法格式汇编语法格式n01,#+/-n10,#+/-n11,#+/-!第33页,共50页,编辑于202
16、2年,星期一n2Addressing_mode中的偏移量为寄存器中的偏移量为寄存器的值的值n前变址不回写形式前变址不回写形式:,+/-n前变址回写形式:前变址回写形式:,+/-!n后变址回写形式:后变址回写形式:,+/-第34页,共50页,编辑于2022年,星期一n偏移量为寄存器值的指令编码类型对应关系偏移量为寄存器值的指令编码类型对应关系nW P汇编语法格式汇编语法格式n01,+/-n10,+/-n11,+/-!第35页,共50页,编辑于2022年,星期一3.4批量批量Load/Store指令寻址方式指令寻址方式nARM指令系统提供了批量指令系统提供了批量Load/Store指令寻指令寻址方
17、式,即通常所说的多寄存器寻址,也就址方式,即通常所说的多寄存器寻址,也就是一次可以传送几个寄存器的值,允许一条是一次可以传送几个寄存器的值,允许一条指令最多传送指令最多传送16个寄存器。个寄存器。第36页,共50页,编辑于2022年,星期一编码格式编码格式n批量加载:批量加载:nLDM!,n批量存储:批量存储:nSTM!,第37页,共50页,编辑于2022年,星期一nregister_list表示要加载或存储的寄存器列表,表示要加载或存储的寄存器列表,bit15:0可以表示可以表示16个寄存器,如果某位为个寄存器,如果某位为1,则该位的位置作,则该位的位置作为寄存器的编号,此寄存器参预加载或存
18、储。为寄存器的编号,此寄存器参预加载或存储。nS用于恢复用于恢复CPSR和强制用户位。当程序计数器和强制用户位。当程序计数器PC包含包含在在LDM指令的指令的register_list中,且中,且S为为1时,则当前模式时,则当前模式的的SPSR被拷贝到被拷贝到CPSR中,使处理器的程序返回和状中,使处理器的程序返回和状态的恢复成为一个原子操作。如果态的恢复成为一个原子操作。如果register_list中不中不包含程序计数器包含程序计数器PC,S为为1则加载或存储的是用户模式则加载或存储的是用户模式下的寄存器组。下的寄存器组。第38页,共50页,编辑于2022年,星期一n注意事项:注意事项:n
19、*指令中寄存器和连续内存地址单元的对应指令中寄存器和连续内存地址单元的对应关系:编号低的寄存器对应内存低地址单元,关系:编号低的寄存器对应内存低地址单元,编号高的寄存器对应内存高地址单元。编号高的寄存器对应内存高地址单元。第39页,共50页,编辑于2022年,星期一内存操作内存操作n后增后增IA(IncrementAfter):每次数据传送后地址加:每次数据传送后地址加4;n先增先增IB(IncrementBefore):每次数据传送前地址加:每次数据传送前地址加4;n后减后减DA(DecrementAfter):每次数据传送后地址减:每次数据传送后地址减4;n先减先减DB(Decrement
20、Before):每次数据传送前地址减:每次数据传送前地址减4;第40页,共50页,编辑于2022年,星期一n它们与指令编码中它们与指令编码中P、U的对应关如下表所示的对应关如下表所示nLDM/STM的地址变化方式的地址变化方式naddr_modePUnDA00nIA01nDB10nIB11第41页,共50页,编辑于2022年,星期一堆栈操作堆栈操作n满堆栈(满堆栈(FullStack):当堆栈指针指向最后压入堆栈的数据时;当堆栈指针指向最后压入堆栈的数据时;n空堆栈(空堆栈(EmptyStack):当堆栈指针指向下一个将要放入数据的空位置时;当堆栈指针指向下一个将要放入数据的空位置时;n根据堆
21、栈的生成方式,又可以分为递增堆栈和递减堆栈:根据堆栈的生成方式,又可以分为递增堆栈和递减堆栈:n递增堆栈(递增堆栈(AscendingStack):当堆栈由低地址向高地址生成时;当堆栈由低地址向高地址生成时;n递减堆栈(递减堆栈(DecendingStack):当堆栈由高地址向低地址生成时;当堆栈由高地址向低地址生成时;第42页,共50页,编辑于2022年,星期一块拷贝与栈操作的对应关系块拷贝与栈操作的对应关系第43页,共50页,编辑于2022年,星期一3.5协处理器指令寻址方式协处理器指令寻址方式n协处理器加载协处理器加载/存储指令的寻址方式存储指令的寻址方式n协处理器数据处理指令的寻址方式
22、协处理器数据处理指令的寻址方式第44页,共50页,编辑于2022年,星期一nL,n其中:其中:nopcode为指令操作码;为指令操作码;ncoproc为协处理器名称;为协处理器名称;naddressing_mode为指令寻址模式。为指令寻址模式。第45页,共50页,编辑于2022年,星期一n1.内存地址索引格式内存地址索引格式n前变址不回写形式:前变址不回写形式:,#+/-*4n前变址回写形式:前变址回写形式:,#+/-*4!n后变址回写形式:后变址回写形式:,#+/-*4第46页,共50页,编辑于2022年,星期一n2内存地址非索引格式内存地址非索引格式n这种指令寻址汇编语法格式为这种指令寻
23、址汇编语法格式为,第47页,共50页,编辑于2022年,星期一协处理器数据处理指令的寻址方式协处理器数据处理指令的寻址方式(选学选学)n协处理器数据处理指令的寻址方式主要通过协处理器数据处理指令的寻址方式主要通过寄存器寻址,根据寄存器编码来查找相应的寄存器寻址,根据寄存器编码来查找相应的寄存器,这部分内容在指令系统中进行详细寄存器,这部分内容在指令系统中进行详细介绍。介绍。第48页,共50页,编辑于2022年,星期一思考与练习题思考与练习题n在在ARM指令中,什么是合法的立即数?判指令中,什么是合法的立即数?判断下面各立即数是否合法,如果合法则写出断下面各立即数是否合法,如果合法则写出在指令中的编码格式(也就是在指令中的编码格式(也就是8位常数和位常数和4位的移位数)。位的移位数)。n0 x54300 x1080 x304 0 x501 0 xfb100000 x3340000 x3FC0000 x1FE00000 x55800000 x7F8000 x39C0000 x1FE80000第49页,共50页,编辑于2022年,星期一第第3章章ARM指令集寻址方式指令集寻址方式TheEnd第50页,共50页,编辑于2022年,星期一