《ARM指令集系统》PPT课件.ppt

上传人:桔**** 文档编号:567587690 上传时间:2024-07-21 格式:PPT 页数:48 大小:228.78KB
返回 下载 相关 举报
《ARM指令集系统》PPT课件.ppt_第1页
第1页 / 共48页
《ARM指令集系统》PPT课件.ppt_第2页
第2页 / 共48页
《ARM指令集系统》PPT课件.ppt_第3页
第3页 / 共48页
《ARM指令集系统》PPT课件.ppt_第4页
第4页 / 共48页
《ARM指令集系统》PPT课件.ppt_第5页
第5页 / 共48页
点击查看更多>>
资源描述

《《ARM指令集系统》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《ARM指令集系统》PPT课件.ppt(48页珍藏版)》请在金锄头文库上搜索。

1、1TM1n配套教材:配套教材:ARMARM嵌入式系统结构与编程嵌入式系统结构与编程,邱铁邱铁 编著,清华大学出版社,编著,清华大学出版社,2009,32009,3ARMARM嵌入式系统结构与编程嵌入式系统结构与编程2TM第第4章章ARM指令集系统指令集系统ARM微微处处理理器器的的指指令令集集可可以以分分为为数数据据处处理理指指令令、跳跳转转指指令令、程程序序状状态态寄寄存存器器(PSR)处处理理指指令令、加加载载/存存储储指指令令、协协处处理理器器指指令令和和杂杂类指令六大类。类指令六大类。本本章章将将分分类类介介绍绍ARM指指令令语语法法格格式式、指指令令编编码格式和码格式和ARM指令的详

2、细功能。指令的详细功能。3TM3内容提要内容提要41数据处理指令数据处理指令42ARM分支指令分支指令43加载加载/存储指令存储指令44批量加载批量加载/存储指令存储指令45交换指令交换指令46程序状态寄存器程序状态寄存器PSR访问指令访问指令47协处理器操作指令协处理器操作指令48异常产生指令异常产生指令4TM441数据处理指令数据处理指令n基本数据处理指令基本数据处理指令n乘法指令乘法指令5TM5基本数据处理指令基本数据处理指令nARM基本的数据处理指可以分为基本的数据处理指可以分为4类:数据类:数据传送指令、算术运算指令、逻辑运算指令和传送指令、算术运算指令、逻辑运算指令和比较指令。比较

3、指令。nARM基本的数据处理指令汇编指令语法格式:基本的数据处理指令汇编指令语法格式:nS,6TM67TM7n1.数据传送指令数据传送指令nMOV指令指令nMOV指令的汇编语法格式为指令的汇编语法格式为nMOVcondSRd,operand2n将第二操作数将第二操作数operand2表示的数据传送到目标寄表示的数据传送到目标寄存器存器Rd中;如果指令包含后缀中;如果指令包含后缀“S”,则根据操,则根据操作结果或移位情况更新作结果或移位情况更新CPSR中的相应条件标志位中的相应条件标志位。8TM8nMVN指令指令nMNV指令的汇编语法格式为指令的汇编语法格式为nMVNcondSRd,operan

4、d2n将第二操作数将第二操作数operand2表示的数据按位取表示的数据按位取反后传送到目标寄存器反后传送到目标寄存器Rd中;如果指令包中;如果指令包含后缀含后缀“S”,则根据操作结果或移位情况,则根据操作结果或移位情况更新更新CPSR中的相应条件标志位。中的相应条件标志位。9TM9n2算术运算指令算术运算指令n(1)ADD加法指令加法指令nADD加法指令的汇编语法格式为加法指令的汇编语法格式为nADDcondSRd,Rn,operand2nADD指令将指令将operand2表示的数据与寄存器表示的数据与寄存器Rn中的中的值相加,并把结果传送到目标寄存器值相加,并把结果传送到目标寄存器中;如果

5、中;如果指令包含后缀指令包含后缀“S”,则根据操作结果更新,则根据操作结果更新CPSR中中的相应条件标志位。的相应条件标志位。10TM10n(2)ADC带带C标志位的加法指令标志位的加法指令nADCcondSRd,Rn,operand2n功能:功能:ADC带带C标志位的加法指令将标志位的加法指令将operand2表示表示的数据与寄存器的数据与寄存器Rn中的值相加,再加上中的值相加,再加上CPSR中的中的C条件标志位的值,并把结果传送到目标寄存器条件标志位的值,并把结果传送到目标寄存器Rd中;如果指令包含后缀中;如果指令包含后缀“S”,则根据操作结果更新,则根据操作结果更新CPSR中的相应条件标

6、志位。该指令可以实现两个中的相应条件标志位。该指令可以实现两个高于高于32位的数据相加运算。位的数据相加运算。11TM11nSUB减法指令减法指令nSUBcondSRd,Rn,operand2n功能:功能:SUB指令从寄存器指令从寄存器Rn中减去中减去operand2表示表示的数值,并把结果传送到目标寄存器的数值,并把结果传送到目标寄存器中;如果中;如果指令包含后缀指令包含后缀“S”,则根据操作结果更新,则根据操作结果更新CPSR中中的相应条件标志位。的相应条件标志位。n注意事项:注意事项:当指令包含后缀当指令包含后缀“S”时,如果减法运算时,如果减法运算有借位,则有借位,则C=0,否则,否则

7、C=1。12TM12n(4)SBC带带C标志位的减法指令标志位的减法指令nSBCcondSRd,Rn,operand2nSBC指令从寄存器指令从寄存器中减去中减去operand2表表示的数值,再减去寄存器示的数值,再减去寄存器CPSR中中C条件标志条件标志位的反码,并把结果传送到目标寄存器位的反码,并把结果传送到目标寄存器Rd中;中;如果指令包含后缀如果指令包含后缀“S”,则根据操作结果更,则根据操作结果更新新CPSR中的相应条件标志位。该指令可以中的相应条件标志位。该指令可以实现两个高于实现两个高于32位的数据相减运算。位的数据相减运算。13TM13nRSB逆向减法指令逆向减法指令nRSBc

8、ondSRd,Rn,operand2n功能:功能:RSB指令从第指令从第2操作数操作数operand2表示表示的数值中减去寄存器的数值中减去寄存器Rn值,并把结果传送到值,并把结果传送到目标寄存器目标寄存器Rd中;如果指令包含后缀中;如果指令包含后缀“S”,则根据操作结果更新,则根据操作结果更新CPSR中的相应条件中的相应条件标志位。标志位。14TM14n(6)RSC带带C标志位的逆向减法指令标志位的逆向减法指令nRSCcondSRd,Rn,operand2n功能:功能:RSC指令从指令从operand2表示的数值中减表示的数值中减去寄存器去寄存器Rn值,再减去寄存器值,再减去寄存器CPSR中

9、中C条条件标志位的反码,并把结果传送到目标寄存件标志位的反码,并把结果传送到目标寄存器器Rd中;如果指令包含后缀中;如果指令包含后缀“S”,则根据,则根据操作结果更新操作结果更新CPSR中的相应条件标志位。中的相应条件标志位。15TM15n3逻辑运算指令逻辑运算指令n(1)AND与逻辑运算指令与逻辑运算指令nANDcondSRd,Rn,operand2n功能:功能:AND指令将指令将operand2表示的数值与寄存器表示的数值与寄存器Rn的值按位做逻辑与操作,并把结果保存到目标的值按位做逻辑与操作,并把结果保存到目标寄存器寄存器Rd中;如果指令包含后缀中;如果指令包含后缀“S”,则根据操,则根

10、据操作结果更新作结果更新CPSR中的相应条件标志位。中的相应条件标志位。16TM16n(2)ORR或逻辑运算指令或逻辑运算指令nORRcondSRd,Rn,operand2n功能:功能:ORR指令将指令将operand2表示的数值与寄表示的数值与寄存器存器Rn的值按位做逻辑或操作,并把结果保的值按位做逻辑或操作,并把结果保存到目标寄存器存到目标寄存器Rd中;如果指令包含后缀中;如果指令包含后缀“S”,则根据操作结果更新,则根据操作结果更新CPSR中的相应中的相应条件标志位。条件标志位。17TM17n(3)EOR异或逻辑运算指令异或逻辑运算指令nORRcondSRd,Rn,operand2n功能

11、:功能:ORR指令将指令将operand2表示的数值与寄表示的数值与寄存器存器Rn的值按位做逻辑异或操作,并把结果的值按位做逻辑异或操作,并把结果保存到目标寄存器保存到目标寄存器Rd中;如果指令包含后缀中;如果指令包含后缀“S”,则根据操作结果更新,则根据操作结果更新CPSR中的相应中的相应条件标志位。条件标志位。EOR指令可用于将寄存器中某指令可用于将寄存器中某些位的值取反。些位的值取反。18TM18n(4)BIC清除逻辑运算指令清除逻辑运算指令nBICcondSRd,Rn,operand2n功能:功能:BIC指令将寄存器指令将寄存器Rn的值与的值与operand2表示的数值的反码按位做逻辑

12、与操作,并把表示的数值的反码按位做逻辑与操作,并把结果保存到目标寄存器结果保存到目标寄存器Rd中中19TM19n4比较指令比较指令n比较指令没有目标寄存器,只用作更新条件比较指令没有目标寄存器,只用作更新条件标志位,不保存运算结果,指令后缀无需加标志位,不保存运算结果,指令后缀无需加“S”。在程序设计中,根据操作的结果更新。在程序设计中,根据操作的结果更新CPSR中相应的条件标志位,后面的指令就中相应的条件标志位,后面的指令就可以根据可以根据CPSR中相应的条件标志位来判断中相应的条件标志位来判断是否执行。是否执行。20TM20n(1)CMP相减比较指令相减比较指令nCMPcondRn,ope

13、rand2n功能:功能:CMP指令将寄存器指令将寄存器Rn的值减去的值减去operand2表示的数值,根据操作结果和寄存表示的数值,根据操作结果和寄存器移位情况更新器移位情况更新CPSR中的相应条件标志位。中的相应条件标志位。21TM21n(2)CMN负数比较指令负数比较指令nCMNcondRn,operand2n功能:功能:CMN指令将寄存器指令将寄存器Rn的值加上的值加上operand2表示的数值,根据操作结果和寄存表示的数值,根据操作结果和寄存器移位情况更新器移位情况更新CPSR中的相应条件标志位。中的相应条件标志位。22TM22n(3)TST位测试指令位测试指令nTSTcondRn,o

14、perand2n功能:功能:CMN指令将寄存器指令将寄存器Rn的值与的值与operand2表示的数值按位作逻辑表示的数值按位作逻辑“与与”操作,操作,根据操作结果和寄存器移位情况更新根据操作结果和寄存器移位情况更新CPSR中的相应条件标志位。中的相应条件标志位。23TM23n4)TEQ相等测试指令相等测试指令nTEQcondRn,operand2n功能:功能:TEQ指令将寄存器指令将寄存器Rn的值与的值与operand2表示的数值按位作逻辑表示的数值按位作逻辑“异或异或”操操作,根据操作结果和寄存器移位情况更新作,根据操作结果和寄存器移位情况更新CPSR中的相应条件标志位。中的相应条件标志位。

15、24TM24乘法指令乘法指令nARM乘法指令完成乘法指令完成2个寄存器中数据的乘法,个寄存器中数据的乘法,按照保存结果的数据长度可以分为两类:一按照保存结果的数据长度可以分为两类:一类为类为32位的乘法指令,即乘法操作的结果为位的乘法指令,即乘法操作的结果为32位;另一类为位;另一类为64位的乘法指令,即乘法操位的乘法指令,即乘法操作的结果为作的结果为64位。位。25TM25n基本的数据处理指令还有很多注意事项,具基本的数据处理指令还有很多注意事项,具本参考本参考教材教材ARM嵌入式系统结构与编程嵌入式系统结构与编程第第4章章4.1节节26TM26n132位乘法指令位乘法指令27TM27n(1

16、)MULnMULcondSRd,Rm,RsnMUL指令实现两个指令实现两个32位的数(可以为无符号位的数(可以为无符号数,也可为有符号数)的乘积(数,也可为有符号数)的乘积(Rm*Rs)并将结果存放到一个并将结果存放到一个32位的寄存器位的寄存器Rd中;如中;如果指令包含后缀果指令包含后缀“S”,则根据操作结果更新,则根据操作结果更新CPSR中的相应条件标志位。中的相应条件标志位。28TM28n(2)MLAnMLAcondSRd,Rm,Rs,RnnMLA指令实现两个指令实现两个32位的数(可以为无符号位的数(可以为无符号数,也可为有符号数)的乘积,再将乘积数,也可为有符号数)的乘积,再将乘积(

17、Rm*Rs)加上第)加上第3个操作数个操作数Rn,并将结,并将结果存放到一个果存放到一个32位的寄存器位的寄存器Rd中;如果指令中;如果指令包含后缀包含后缀“S”,则根据操作结果更新,则根据操作结果更新CPSR中的相应条件标志位。中的相应条件标志位。29TM29n264位乘法指令位乘法指令30TM30n(1)UMULLnUMULLcondSRdLo,RdHi,Rm,RsnUMULL指令实现两个指令实现两个32位无符号数的乘积,乘积位无符号数的乘积,乘积结果的高结果的高32位存放到一个位存放到一个32位的寄存器的位的寄存器的RdHi,乘积结果的低乘积结果的低32位存放到另一个位存放到另一个32位

18、的寄存器的位的寄存器的RdLo;如果指令包含后缀;如果指令包含后缀“S”,则根据操作结果,则根据操作结果更新更新CPSR中的相应条件标志位。中的相应条件标志位。31TM31n(2)UMLALnUMLALcondSRdLo,RdHi,Rm,RsnUMLAL指令将两个指令将两个32位无符号数的位无符号数的64位乘积结果位乘积结果与由(与由(RdHi:RdLo)表示的)表示的64位无符号数相加,位无符号数相加,加法结果的高加法结果的高32位存放到寄存器位存放到寄存器RdHi中,乘积结果中,乘积结果的低的低32位存放到寄存器位存放到寄存器RdLo中;如果指令包含后中;如果指令包含后缀缀“S”,则根据操

19、作结果更新,则根据操作结果更新CPSR中的相应条件中的相应条件标志位。标志位。32TM32n(3)SMULLnSMULLcondSRdLo,RdHi,Rm,RsnSMULL指令实现两个指令实现两个32位有符号数的乘积,乘积位有符号数的乘积,乘积结果的高结果的高32位存放到一个位存放到一个32位的寄存器的位的寄存器的RdHi,乘积结果的低乘积结果的低32位存放到另一个位存放到另一个32位的寄存器的位的寄存器的RdLo;如果指令包含后缀;如果指令包含后缀“S”,则根据操作结果,则根据操作结果更新更新CPSR中的相应条件标志位。中的相应条件标志位。33TM33n(4)SMLALnSMLALcondS

20、RdLo,RdHi,Rm,RsnSMLAL指令将两个指令将两个32位有符号数的位有符号数的64位乘积结果位乘积结果与由(与由(RdHi:RdLo)表示的)表示的64位无符号数相加,位无符号数相加,加法结果的高加法结果的高32位存放到寄存器位存放到寄存器RdHi中,乘积结果中,乘积结果的低的低32位存放到寄存器位存放到寄存器RdLo中;如果指令包含后中;如果指令包含后缀缀“S”,则根据操作结果更新,则根据操作结果更新CPSR中的相应条件中的相应条件标志位。标志位。34TM344.2ARM分支指令分支指令n分支指令用于实现程序流程的跳转,在分支指令用于实现程序流程的跳转,在ARM程序中有两种方法可

21、以实现程序流程的跳转:程序中有两种方法可以实现程序流程的跳转:n使用专门的分支指令。使用专门的分支指令。n直接向程序计数器直接向程序计数器PC写入跳转地址值。写入跳转地址值。35TM35n通过向程序计数器通过向程序计数器PC写入跳转地址值,可以写入跳转地址值,可以实现在实现在4GB的地址空间中的任意跳转,在跳的地址空间中的任意跳转,在跳转之前结合使用转之前结合使用MOVLR,PC等类似指令,等类似指令,能够保存程序的返回地址值,从而实现在能够保存程序的返回地址值,从而实现在4GB连续地址空间的子程序调用。连续地址空间的子程序调用。36TM36n分支指令分支指令Bn分支指令分支指令B可以实现跳转

22、到指定的地址执行可以实现跳转到指定的地址执行程序。程序。n指令的汇编语法格式如下:指令的汇编语法格式如下:nB37TM37n在指令的汇编语法中在指令的汇编语法中target_address这个目标地址这个目标地址的计算方法是:将指令中的的计算方法是:将指令中的24位带符号的补码立即位带符号的补码立即数扩展为数扩展为32位;将此位;将此32位数左移两位将得到的值写位数左移两位将得到的值写入到程序计数器入到程序计数器PC中,即跳转到目标地址。能够实中,即跳转到目标地址。能够实现跳转的范围为现跳转的范围为-32MB+32MB。38TM38n带链接的分支指令带链接的分支指令BLn带链接的分支指令带链接

23、的分支指令BL可以实现跳转到指定可以实现跳转到指定的地址执行程序,同时的地址执行程序,同时BL指令还将程序计指令还将程序计数器数器PC的值保存到的值保存到LR寄存器中。寄存器中。n指令的汇编语法格式如下:指令的汇编语法格式如下:nBL39TM39nL决定是否保存返回地址。当有决定是否保存返回地址。当有L时,指令将下一条指令地址时,指令将下一条指令地址保存到保存到LR寄存器中;当无寄存器中;当无L时同时同B指令仅执行跳转,当前指令仅执行跳转,当前PC寄存器的值将不会保存到寄存器的值将不会保存到LR寄存器中。从指令的编码可以寄存器中。从指令的编码可以看出,看出,B与与BL指令的唯一区别是指令的唯一

24、区别是bit24,当,当bit24=0是是B指指令,当令,当bit24=1是是BL指令。指令。nBL跳转指令编码中跳转指令编码中signed_immed_24的含义同的含义同B指令。指令。40TM40n带状态切换的跳转指令带状态切换的跳转指令BXnBX指令跳转到指令中所指定的目标地址,指令跳转到指令中所指定的目标地址,目标地址处的指令既可以是目标地址处的指令既可以是ARM指令,也指令,也可以是可以是Thumb指令。指令。n指令的汇编语法格式如下:指令的汇编语法格式如下:nB41TM41nBX指令跳转到指令跳转到Rm指定的地址执行程序,如果指定的地址执行程序,如果Rm的的bit0为为1,则跳转时

25、自动将,则跳转时自动将CPSR中的标志位中的标志位T置位,目标地址的代置位,目标地址的代码为码为Thumb代码;如果代码;如果Rm的的bit0为为0,则跳转时自动将,则跳转时自动将CPSR中的中的T标志位清标志位清0,目标地址的代码为,目标地址的代码为ARM代码。代码。42TM42n带链接和状态切换的跳转指令带链接和状态切换的跳转指令BLXnBLX指令从指令从ARM指令集跳转到指令中所指指令集跳转到指令中所指定的目标地址,并将处理器的工作状态由定的目标地址,并将处理器的工作状态由ARM状态切换到状态切换到Thumb状态,该指令同时状态,该指令同时将程序计数器将程序计数器PC的当前内容保存到链接

26、寄的当前内容保存到链接寄存器存器R14中。中。43TM43n(1)由程序标号给出目标地址)由程序标号给出目标地址n这种形式的这种形式的BLX指令汇编语法格式如下:指令汇编语法格式如下:nBLX44TM44n目标地址目标地址target_address的计算方法:先对指令中定义的有的计算方法:先对指令中定义的有符号符号24位偏移量用符号位扩展为位偏移量用符号位扩展为32位,并将该位,并将该32位数左移位数左移2位,然后将其加到程序计数器位,然后将其加到程序计数器PC中,中,H位(位(bit24)加到目)加到目标地址的第标地址的第1位(位(bit1),目标地址总是),目标地址总是Thumb指令。跳

27、指令。跳转的范围为转的范围为-32MB+32MB。45TM45n(2)寄存器的内容作为目标地址)寄存器的内容作为目标地址n这种形式的这种形式的BLX指令汇编语法格式如下:指令汇编语法格式如下:nBLX46TM46nBLX指令跳转到指令跳转到Rm指定的地址执行程序,如果指定的地址执行程序,如果Rm的的bit0为为1,则跳转时自动将,则跳转时自动将CPSR中的标志位中的标志位T置位,目标地址的置位,目标地址的代码为代码为Thumb代码;如果代码;如果Rm的的bit0为为0,则跳转时自动将,则跳转时自动将CPSR中的中的T标志位清标志位清0,目标地址的代码为,目标地址的代码为ARM代码。代码。47TM第第4章章ARM指令集系统指令集系统上半部上半部完完48TM48下半部内容提要下半部内容提要n43加加载/存存储指令指令n44批量加批量加载/存存储指令指令n45交交换指令指令n46程序状程序状态寄存器寄存器PSR访问指令指令n47协处理器操作指令理器操作指令n48异常异常产生指令生指令

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号