ARM体系结构与结构-第三章.ppt





《ARM体系结构与结构-第三章.ppt》由会员分享,可在线阅读,更多相关《ARM体系结构与结构-第三章.ppt(160页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第3章 ARM指令系统第3章 目录q指令集介绍ARM指令集Thumb指令集ARM指令集跳转(分支)指令 在在ARMARM中有中有两两种方式可以实现程序的种方式可以实现程序的跳转跳转:1 1、使用跳转、使用跳转(分支(分支Branch)指令指令B B或或BLBL跳转跳转2 2、直直接接向向PCPC寄寄存存器器赋赋值值实实现现跳跳转转,实实现现在在2 23232(4GB4GB)空空间的跳转,如:间的跳转,如:mov pcmov pc,r2 r2;r2;r2跳转的地址跳转的地址 。B B、BLBL跳转指令:跳转指令:跳转指令跳转指令B B,仅仅跳转;,仅仅跳转;带带返返回回地地址址的的跳跳转转指指令
2、令BLBL,跳跳转转同同时时还还将将BLBL指指令令的下一条指令的地址(返回地址)放入的下一条指令的地址(返回地址)放入LRLR;取指译码执行取指译码执行取指译码执行PC指针?PC8PC4MOV LR,PCMOV PC,#0XFF000000n带返回的跳转指令BLADD R0,R1,R2跳转并执行完跳转并执行完0XFF000000处的子程序,用处的子程序,用 MOV PC,LR 实现返回。实现返回。注意:将暂时放弃注意:将暂时放弃ADD指令的执行。指令的执行。取指译码执行取指译码执行取指译码执行PC指针?PC8PC4n使用PC实现长跳转BL Lable执行执行BL Lable 指令的同时将指令
3、的同时将LR=PC-4,执行完,执行完Lable处的子程序处的子程序后用后用 MOV PC,LR 实现返回实现返回ADD R3,R0,R2B、BL指令格式如下:指令格式如下:BL 为指令跳转的目标地址。为指令跳转的目标地址。如:如:B Label B B、BLBL指指令令跳跳转转范范围围限限制制在在当当前前指指令令的的32M32M字字节节地地址址内内(ARM(ARM指令为字对齐,最低指令为字对齐,最低2 2位地址固定为位地址固定为0)0)。跳转指令中的实际值(跳转指令中的实际值(signed_immed_24)是相对是相对PC值的一个值的一个偏偏移量移量;它的值由汇编器来计算,它是;它的值由汇
4、编器来计算,它是 24 位位有符号数有符号数,左移两位后,左移两位后(去掉一位符号位后,有效偏移为(去掉一位符号位后,有效偏移为 25 位位(+/-32 M)),由符号扩展,由符号扩展到到 32 位。位。cond1 0 1Lsigned-immed_24B及BL指令的编码格式0232427 26 2531 28BLLabelxxxxxxLabelxxxMOVPC,LRAddr1Addr2xxxxxxLRPCARM指令分支指令BL指令格式如下:指令格式如下:BLcond Label;PClabel,LR PC-4带带返返回回地地址址的的BLBL指指令令,适适用用于于子子程程序序调调用用,使使用用
5、该该指指令令后后,下下一一条条指指令令的的地地址址拷拷贝贝到到R14(R14(即即LR)LR)寄寄存存器器中中,然然后后跳跳转转到指定地址运行程序。到指定地址运行程序。LabelAddr2Addr21.当程序执行到BL跳转指令时,硬件将下一条指令的地址Addr2装入LR寄存器,并把跳转地址装入程序计数器(PC)2.程序跳转到目标地址Label继续执行,当子程序执行结束后,将LR寄存器内容存入PC,返回调用函数继续执行3.2 指令集介绍ARM指令集ARM数据处理指令数据处理指令大致可分为数据处理指令大致可分为4 4类:类:数据传送指令数据传送指令:MOVMOVMVNMVN;算术运算指令算术运算指
6、令:ADDADDADCADCSUBSUBSBCSBCRSBRSBRSCRSC;逻辑运算指令逻辑运算指令:ANDANDORRORREOREORBICBIC;比较指令比较指令:CMPCMPCMNCMNTSTTSTTEQTEQ。数数据据处处理理指指令令只只能能对对寄寄存存器器的的内内容容进进行行操操作作,而而不不能能对对内内存存中中的的数数据据进进行行操操作作。数数据据处处理理指指令令中中除除比比较较指指令令外外均均可可选择使用选择使用S S后缀,并影响后缀,并影响cpsrcpsr状态标志。状态标志。3.2 指令集介绍ARM指令集ARM数据处理指令数据处理指令大致可分为数据处理指令大致可分为4 4类
7、:类:数据传送指令数据传送指令:MOVMOVMVNMVN;算术运算指令算术运算指令:ADDADDADCADCSUBSUBSBCSBCRSBRSBRSC;RSC;逻辑运算指令逻辑运算指令:ANDANDORRORREOREORBICBIC;比较指令比较指令:CMPCMPCMNCMNTSTTSTTEQTEQ。数数据据处处理理指指令令只只能能对对寄寄存存器器的的内内容容进进行行操操作作,而而不不能能对对内内存存中中的的数数据据进进行行操操作作。数数据据处处理理指指令令中中除除比比较较指指令令外外均均可可选选择择使用使用S S后缀,并影响状态标志。后缀,并影响状态标志。ARM数据处理指令数据传送MOVM
8、OV指令格式如下:指令格式如下:MOVcondS Rd,operand2;Rdoperand2 MOVMOV指指令令将将立立即即数数(合合法法)或或寄寄存存器器传传送送到到目目标标寄寄存存器器(RdRd),可用于移位运算等操作。),可用于移位运算等操作。MOVMOV指令举例如下:指令举例如下:MOV R1,#0 x10;R1=0 x10 R1=0 x10 MOV R0,R1;R0=R1 R0=R1 MOV R2,R2,LSL#2MOVS PC,LR;PCPC为目标寄存器时,为目标寄存器时,PC=LRPC=LR,同时,同时spsr-spsr-cpsrcpsr,本条指令只能在异常模式下使,本条指令
9、只能在异常模式下使用,因为用户和系统模式没有用,因为用户和系统模式没有spsrspsr。ARM数据处理指令数据传送MVNMVN指令格式如下:指令格式如下:MVN condS Rd,operand2;Rd(operand2)MVNMVN指指令令将将立立即即数数或或寄寄存存器器按按位位取取反反后后传传送送到到目目标标寄寄存存器器(Rd),operand2为为一一个个合合法法立立即即数数,因因为为其其具具有有取取反反功功能能,所以可以装载所以可以装载范围更广范围更广的立即数。的立即数。MVNMVN指令举例如下:指令举例如下:MVN R1,#0 xFF;R1=0 xFFFFFF00 MVN R1,R2
10、;将将R2取反,结果存到取反,结果存到R1MVN R2,#0;将将-1放入放入R2 3.2 指令集介绍ARM指令集ARM数据处理指令数据处理指令大致可分为4类:数据传送指令:MOVMVN;算术运算指令:ADDADCSUBSBCRSBRSC;逻辑运算指令:ANDORREORBIC;比较指令:CMPCMNTSTTEQ。数据处理指令只能对寄存器的内容进行操作,而不能对内存中的数据进行操作。数数据据处处理理指指令令中中除除比比较较指指令令外外均可选择使用S后缀,并影响状态标志。ADD(addition加)指令格式如下:ADDcondS Rd,Rn,operand2ADDcondS Rd,Rn,oper
11、and2;RdRn+operand2 加加法法运运算算指指令令ADDADD将将operand2operand2的的值值与与RnRn的的值值相相加加,结结果果保保存存到到RdRd寄寄存存器器,operand2 为为立立即即数数时时,必须为合法立即数必须为合法立即数。应用示例:应用示例:ADDS R1,R1,#1;R1=R1+1;R1=R1+1,并影响标志位,并影响标志位 ADD R1,R1,R2;R1=R1+R2;R1=R1+R2 ARM数据处理指令算术运算ADCADC指令格式如下:指令格式如下:ADCcondS Rd,Rn,operand2;RdRn+operand2+Carry 带进位加法指
12、令带进位加法指令ADCADC将将operand2operand2的值与的值与RnRn的值相加,的值相加,再加上再加上CPSRCPSR中的中的C C标志位,结果保存到标志位,结果保存到RdRd寄存器。寄存器。应用示例(使用应用示例(使用ADCADC实现实现6464位加法,结果存于位加法,结果存于R1R1、R0R0中):中):ADDS R0,R0,R2;R0;R0等于低等于低3232位相加,并影响标志位位相加,并影响标志位 ADC R1,R1,R3;R1;R1等于高等于高3232位相加,并加上低位相加,并加上低3232位进位位进位C CSUBSUB(subsubtracttract减减)指令格式如
13、下:指令格式如下:SUBcondS SUBcondS Rd,Rn,operand2;Rd,Rn,operand2;RdRn-operand2 减减法法运运算算指指令令SUBSUB指指令令用用寄寄存存器器RnRn减减去去operand2operand2,结果保存到结果保存到RdRd中。中。应用示例:应用示例:SUBR0,R0,#1;R0=R0-1;R0=R0-1,不影响标志位,不影响标志位 SUBS R2,R1,R2;R2=R1-R2;R2=R1-R2,并影响标志位,并影响标志位SBCSBC指令格式如下:指令格式如下:SBCcondS Rd,Rn,operand2;RdRn-operand2-(
14、非非)Carry带进位减法指令带进位减法指令SBCSBC用寄存器用寄存器RnRn减去减去operand2operand2,再减去再减去CPSRCPSR中的中的C C标志位的标志位的非非(减法中产生借位时(减法中产生借位时C C位位=0=0),结果保存到),结果保存到RdRd中。中。应用示例(使用应用示例(使用SBCSBC实现实现6464位减法,结果存于位减法,结果存于R1R1、R0R0中):中):SUBS R0,R0,R2;低;低3232位相减,并影响标志位位相减,并影响标志位SBC R1,R1,R3;高;高3232位相减,并减去低位借位位相减,并减去低位借位C C的的;反码;反码ARM数据处
15、理指令算术运算RSBRSB(R Reverse Subtracteverse Subtract)指令格式如下:)指令格式如下:RSBcondS Rd,Rn,operand2;Rdoperand2-Rn 逆向减法运算指令逆向减法运算指令RSBRSB指令将指令将operand2operand2的值减去的值减去RnRn,结果,结果保存到保存到RdRd中。中。应用示例:应用示例:RSB R3,R1,#0 xFF00;R3=0 xFF00-R1;R3=0 xFF00-R1 RSBS R1,R2,R2,LSL#2;R1=(R22)-R2=R2;R1=(R22)-R2=R23 3 RSCRSC指令格式如下:
16、指令格式如下:RSCcondS Rd,Rn,operand2 ;Rdoperand2-Rn-(NOT)Carry 带进位逆向减法指令带进位逆向减法指令RSCRSC指令用寄存器指令用寄存器operand2operand2减去减去RnRn,再减去,再减去CPSRCPSR中的中的C C位的非位的非(减法中产生借位时(减法中产生借位时C位位=0),),结果保存到结果保存到RdRd中。中。应用示例(使用应用示例(使用RSCRSC指令实现求指令实现求6464位数值的负数位数值的负数 ):):RSBS R2,R0,#0 RSC R3,R1,#03.2 指令集介绍ARM指令集ARM数据处理指令数据处理指令大致
17、可分为4类:数据传送指令:MOVMVN;算术运算指令:ADDADCSUBSBCRSBRSC;逻辑运算指令:ANDORREORBIC;比较指令:CMPCMNTSTTEQ。数据处理指令只能对寄存器的内容进行操作,而不能对内存中的数据进行操作。数数据据处处理理指指令令中中除除比比较较指指令令外外均可选择使用S后缀,并影响状态标志。AND指令格式如下:ANDcondS Rd,Rn,operand2;RdRn&operand2(&为与运算符)为与运算符)逻辑与操作指令逻辑与操作指令ANDAND指令将指令将operand2operand2的值与寄存的值与寄存器器RnRn的值的值按位按位作逻辑作逻辑“与与”
18、操作,结果保存到操作,结果保存到RdRd中。中。应用示例:应用示例:ANDS R0,R0,#0 x01;R0=R0&0 x01;R0=R0&0 x01,取出最低位数据。,取出最低位数据。;影响标志位影响标志位AND R2,R1,R3;R2=R1&R3;R2=R1&R3 ORR指令格式如下:ORRcondS Rd,Rn,operand2;RdRn|operand2 (|为或运算符)为或运算符)逻辑或操作指令逻辑或操作指令ORRORR指令将指令将operand2operand2的值与寄的值与寄存器存器RnRn的值按位作逻辑的值按位作逻辑“或或”操作,结果保存到操作,结果保存到RdRd中。中。应用示
19、例:应用示例:ORR R0,R0,#0 x0F;将将R0R0的低的低4 4位置位置1 1 MOV R1,R2,LSR#24 ORR R3,R1,R3,LSL#8;使用使用ORRORR指令将指令将R2R2的高的高8 8位数据移入到位数据移入到R3R3低低8 8位中位中ARM数据处理指令逻辑运算指令EOREOR指令格式如下:指令格式如下:EORcondS Rd,Rn,operand2;RdRn operand2 (为异或运算符)为异或运算符)逻辑异或操作指令逻辑异或操作指令EOREOR指令将指令将operand2operand2的值与寄存器的值与寄存器RnRn的值按位作逻辑的值按位作逻辑“异或异或
20、”操作操作(不相同的位为不相同的位为1 1,相同的位为,相同的位为0 0),),结果保存到结果保存到RdRd中。中。应用示例:应用示例:EORR1,R1,#0 x0F;将将R1R1的低的低4 4位取反位取反 EOR R2,R1,R0;R2=R1R0;R2=R1R0 EORSR0,R5,#0 x01;将将R5R5和和0 x010 x01进行逻辑异或,进行逻辑异或,;结果保存到结果保存到R0R0,并影响标志位,并影响标志位 ARM数据处理指令逻辑运算指令BIC(Bit Clear)BIC(Bit Clear)指令格式如下:指令格式如下:BICcondS Rd,Rn,operand2;RdRn&(o
21、perand2)位清除位清除指令指令BICBIC指令将寄存器指令将寄存器RnRn的值与的值与operand2operand2的值的反的值的反码按位作逻辑码按位作逻辑“与与”操作,结果保存到操作,结果保存到RdRd中。中。应用示例:应用示例:BIC R1,R1,#0 x0F;将将R1R1的低的低4 4位清零,其它位不变位清零,其它位不变 BIC R1,R2,R3;将将R3R3的反码和的反码和R2R2相逻辑相逻辑“与与”,;结果保存到结果保存到R1R1中,实际上将中,实际上将R2R2中中;与与R3R3中为中为1 1的位号处清零的位号处清零ARM数据处理指令比较指令CMP(Compare)CMP(C
22、ompare)指令格式如下:指令格式如下:CMPcond Rn,operand2;Rn-operand2 标志标志N、Z、C、V 比较指令比较指令CMPCMP指令将寄存器指令将寄存器RnRn的值减去的值减去operand2operand2的值,的值,根据操作的结果更新根据操作的结果更新CPSRCPSR中的相应条件标志位,中的相应条件标志位,以便以便后面的后面的指令根据相应的条件标志来判断是否执行。指令根据相应的条件标志来判断是否执行。应用示例:应用示例:CMPR1,#10;R1;R1与与1010比较,设置相关标志位比较,设置相关标志位 CMPR1,R2;R1R1与与R2R2比较,设置相关标比较
23、,设置相关标志位志位注意注意:CMP指令与指令与SUBS指令的区别在于指令的区别在于CMP指令不保存运算指令不保存运算结果。结果。ARM数据处理指令比较取反指令CMN(Compare Negative)CMN(Compare Negative)指令格式如下:指令格式如下:CMNcond Rn,operand2;Rn+operand2 标志标志N、Z、C、V 负数比较指令负数比较指令CMNCMN指令使用寄存器指令使用寄存器RnRn的值加上的值加上operand2operand2的值,根据操作的结果更新的值,根据操作的结果更新CPSRCPSR中的相应条件标志位,以便后中的相应条件标志位,以便后面的
24、指令根据相应的条件标志来判断是否执行。面的指令根据相应的条件标志来判断是否执行。应用示例:应用示例:CMN R0,#1;R0+1;R0+1(或(或R0-R0-(-1-1),影响条件标志),影响条件标志位位注注意意:CMN指指令令与与ADDS指指令令的的区区别别在在于于CMN指指令令不不保保存存运运算算结果。结果。CMN指令可用于负数比较:指令可用于负数比较:比如比如CMN R0,#1指令则表示指令则表示R0与与-1比较。比较。ARM数据处理指令位测试指令TST(test)TST(test)指令格式如下:指令格式如下:TSTcond Rn,operand2;Rn&operand2 影响标志影响标
25、志N、Z、C 位位测试指令测试指令TSTTST指令将寄存器指令将寄存器RnRn的值与的值与operand2operand2的值按位的值按位作逻辑作逻辑“与与”操作,根据操作的结果更新操作,根据操作的结果更新CPSRCPSR中的相应条件中的相应条件标志位,以便后面的指令根据相应的条件标志来判断是否执行。标志位,以便后面的指令根据相应的条件标志来判断是否执行。应用示例:应用示例:TSTR0,#0 x01;判断判断R0R0的最低位是否为的最低位是否为0 0 TSTR1,#0 x0F;判断判断R1R1的低的低4 4位是否为位是否为0 0 注注意意:TST指指令令与与ANDS指指令令的的区区别别在在于于
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ARM 体系结构 结构 第三

限制150内