嵌入式体系结构及接口技术:第4章 ARM指令集系统2_第1页
嵌入式体系结构及接口技术:第4章 ARM指令集系统2_第2页
嵌入式体系结构及接口技术:第4章 ARM指令集系统2_第3页
嵌入式体系结构及接口技术:第4章 ARM指令集系统2_第4页
嵌入式体系结构及接口技术:第4章 ARM指令集系统2_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1TM1内容提要内容提要41 数据处理指令数据处理指令42 ARM分支指令分支指令43 加载加载/存储指令存储指令44 批量加载批量加载/存储指令存储指令45 交换指令交换指令46 程序状态寄存器程序状态寄存器PSR访问指令访问指令47 协处理器操作指令协处理器操作指令48 异常产生指令异常产生指令2TM24.3 加载加载/存储指令存储指令n用于操作用于操作32位的字类型数据以及位的字类型数据以及8位无符号位无符号的字节类型数据;的字节类型数据;n用于操作用于操作16位半字类型数据和位半字类型数据和8位的有符号位的有符号字节类型数据。字节类型数据。3TM3字、无符号字节寻址字、无符号字节寻址偏

2、移量的提供形式偏移量的提供形式偏移量的作用时间偏移量的作用时间立即数立即数前变址不回写前变址不回写寄存器寄存器前变址回写前变址回写寄存器移位寄存器移位后变址回写后变址回写4TM4431 加载加载/存储字、无符号字节指令存储字、无符号字节指令1 LDR/STR指令指令nLDRcond Rd,nSTRcond Rd,nLDRcondT Rd,nSTRcondT Rd,5TM5431 加载加载/存储字、无符号字节指令存储字、无符号字节指令1 LDR/STR指令指令n例例4-27LDR R0,R1,#-4LDR R0,R1,R6!LDR R0,R1,R2,LSL #2STR R0,R1,#4!STR

3、R0,R1,#46TM62 LDRB/STRB指令指令nLDRcondB Rd,nSTRcondB Rd,nLDRcond BT Rd,nSTRcondBT Rd,7TM72 LDRB/STRB指令指令LDRB R0,R1,#-4LDRB R0,R1,R6!LDRB R0,R1,R2,LSL #2STRB R0,R1,#4!STRB R0,R1,#48TM84.3.2半字、有符号字节访问指半字、有符号字节访问指令令n半字数据访问指令用于内存中的数据与寄存器低半字数据访问指令用于内存中的数据与寄存器低16位数据进行操作,有符号字节访问指令可实现向寄位数据进行操作,有符号字节访问指令可实现向寄存器

4、加载存器加载8位的有符号字节数据。位的有符号字节数据。n对于向寄存器对于向寄存器加载无符号半字数据加载无符号半字数据,寄存器的高,寄存器的高16位位bits31:16清零;清零;n对于向寄存器对于向寄存器加载有符号半字数据加载有符号半字数据,寄存器的高,寄存器的高16位位bits31:16用符号位扩展为用符号位扩展为32位;位;n对于向寄存器对于向寄存器加载有符号字节数据加载有符号字节数据,寄存器的高,寄存器的高24位位bits31:8用符号位扩展为用符号位扩展为32位。位。9TM9nSTRcondH Rd,nLDRcondH Rd,nLDRcondSH Rd, nLDRcondSB Rd,

5、10TM10偏移量的提供形式偏移量的提供形式偏移量的作用时间偏移量的作用时间立即数立即数前变址不回写前变址不回写寄存器寄存器前变址回写前变址回写后变址回写后变址回写半字、有符号字节寻址半字、有符号字节寻址11TM11n例例 4-29LDRH R0,R1,#2LDRH R0,R1,#2LDRH R0,R1,R2STRH R0,R1STRH R0,R1,#2LDRSB R0,R1,R2LDRSH R0,R1,R2!12TM124.4 批量加载批量加载/存储指令存储指令nARM微处理器所支持批量数据加载微处理器所支持批量数据加载/存储指令存储指令(LDM /STM)可以一次性实现一片连续的存储器单元

6、和多可以一次性实现一片连续的存储器单元和多个寄存器之间进行传送数据。个寄存器之间进行传送数据。n根据根据 LDM /STM所实现的操作可以将其分为三类:所实现的操作可以将其分为三类:基本批量字数据加载基本批量字数据加载/存储指令、用户模式下的批量存储指令、用户模式下的批量字数据加载字数据加载/存储指令、带状态寄存器的批量字数据存储指令、带状态寄存器的批量字数据加载指令加载指令13TM13基本批量字数据加载基本批量字数据加载/存储指令存储指令n批量加载:批量加载:LDM !, n批量存储:批量存储:STM !, 14TM14内存操作内存操作 批量批量Load/Store指令在实现寄存器组和连续内

7、存单指令在实现寄存器组和连续内存单元中数据传递时,地址的变化方式(元中数据传递时,地址的变化方式(addr_mode)有以下四种:有以下四种:n后增后增IA (Increment After) :每次数据传送后地址加:每次数据传送后地址加4; n先增先增IB (Increment Before) :每次数据传送前地址加:每次数据传送前地址加4 ; n后减后减DA (Decrement After) :每次数据传送后地址减:每次数据传送后地址减4 ; n先减先减DB (Decrement Before) :每次数据传送前地址减:每次数据传送前地址减4 ; 15TM15堆栈操作堆栈操作四种类型的堆

8、栈工作方式:四种类型的堆栈工作方式:n满递增堆栈(满递增堆栈(FA)n满递减堆栈(满递减堆栈(FD)n空递增堆栈(空递增堆栈(EA)n空递减堆栈(空递减堆栈(ED)16TM16注意事项:注意事项:nRn不允许为程序计数器不允许为程序计数器PC(R15)n指令中寄存器和连续内存地址单元的对应关系:指令中寄存器和连续内存地址单元的对应关系:编编号低的寄存器对应内存低地址单元,编号高的寄存号低的寄存器对应内存低地址单元,编号高的寄存器对应内存高地址单元。器对应内存高地址单元。n如果指令中基址寄存器如果指令中基址寄存器在寄存器列表在寄存器列表中,而且指令中寻址方式指定指令执行中,而且指令中寻址方式指定

9、指令执行后更新基址寄存器后更新基址寄存器 的值,则指令执行会产生的值,则指令执行会产生不可预知的结果。不可预知的结果。17TM17示例解析示例解析MOVR1,#0 x9000MOVR0,#0 x11MOVR2,#0 x22MOV R3,#0 x33MOV R4,#0 x44MOV R5,#0 x55STMDB R1! ,R0,R2-R518TM18存储情况如下存储情况如下19TM19用户模式下的批量字数据加载用户模式下的批量字数据加载/存储指存储指令令n用户模式下的批量字数据加载用户模式下的批量字数据加载/存储指令操作存储指令操作实现的操作是:即使处理器工作在特权模式实现的操作是:即使处理器工

10、作在特权模式下,存储系统也将访问看成是处理器在用户下,存储系统也将访问看成是处理器在用户模式下,因此所加载模式下,因此所加载/存储的寄存器组为用户存储的寄存器组为用户模式下的寄存器。模式下的寄存器。该指令寄存器列表中不包该指令寄存器列表中不包含程序计数器含程序计数器PC,不允许对基地址寄存器回,不允许对基地址寄存器回写操作。写操作。20TM20用户模式下的批量字数据加载用户模式下的批量字数据加载/存储指令汇编语存储指令汇编语法格式为法格式为n批量加载:批量加载:LDM , n批量存储:批量存储:STM , 用户模式下的批量字数据加载用户模式下的批量字数据加载/存储指令存储指令21TM21注意事

11、项:注意事项:n寄存器和内存地址单元的对应关系;寄存器和内存地址单元的对应关系;n在用户模式和系统模式下不要使用本指令;在用户模式和系统模式下不要使用本指令;n基址寄存器是当前模式下的物理寄存器;基址寄存器是当前模式下的物理寄存器;n不允许对基址寄存器回写操作。不允许对基址寄存器回写操作。用户模式下的批量字数据加载用户模式下的批量字数据加载/存储指存储指令令22TM22带带PSR操作的批量字数据加载指令操作的批量字数据加载指令 n在带在带PSR操作的批量字数据加载指令中,操作的批量字数据加载指令中,程程序计数器序计数器PC包含在指令寄存器列表中包含在指令寄存器列表中。n该指令将数据从连续的内存

12、单元中读取到指该指令将数据从连续的内存单元中读取到指令中寄存器列表中的各寄存器中。它令中寄存器列表中的各寄存器中。它同时将同时将目前处理器模式对应的目前处理器模式对应的SPSR寄存器内容复寄存器内容复制到制到CPSR寄存器中。寄存器中。 23TM23n批量加载:批量加载:LDM !, 带带PSR操作的批量字数据加载指令操作的批量字数据加载指令 24TM24注意事项:注意事项:n寄存器和内存地址单元的对应关系;寄存器和内存地址单元的对应关系;n如果如果Rn在在Register_list中,而且指令中指定指令执中,而且指令中指定指令执行后更新行后更新Rn的值,指令执行会产生不可预知的结果的值,指令

13、执行会产生不可预知的结果;n本指令主要用于从异常模式下返回,在用户模式和系本指令主要用于从异常模式下返回,在用户模式和系统模式下使用本指令会产生不可预知的结果。统模式下使用本指令会产生不可预知的结果。带带PSR操作的批量字数据加载指令操作的批量字数据加载指令 25TM25示例解析:示例解析:n如何用带如何用带PSR操作的批量字数据加载指令实现操作的批量字数据加载指令实现IRQ中断的返回?中断的返回? 在进入在进入IRQ中断处理程序时,首先计算返回地址,并保存相中断处理程序时,首先计算返回地址,并保存相关的寄存器关的寄存器 SUBR14,R14,#4 ; STMFD R13!, R0-R3, R

14、12, LR 如果如果IRQ中断处理程序返回到被中断的进程则执行下面的指中断处理程序返回到被中断的进程则执行下面的指令。该指令从数据栈中恢复寄存器令。该指令从数据栈中恢复寄存器R0R3及及R12的值,将返的值,将返回地址传送到回地址传送到PC中,并将中,并将SPSR_irq值复制到值复制到CPSR中中 LDMFD R13!, R0-R3, R12, PC 26TM264.5 交换指令交换指令nARM指令支持原子操作,主要是用来对信号指令支持原子操作,主要是用来对信号量的操作,因为信号量操作的要求是作原子量的操作,因为信号量操作的要求是作原子操作,即在一条指令中完成信号量的读取和操作,即在一条指

15、令中完成信号量的读取和修改操作。修改操作。 27TM27字数据交换指令字数据交换指令 nSWP是对字数据操作指令,用于将一个寄存是对字数据操作指令,用于将一个寄存器器Rn为地址的内存字数据单元的内容读取到为地址的内存字数据单元的内容读取到一个寄存器一个寄存器中,同时将另一个寄存器中,同时将另一个寄存器Rm的内容写入到该内存单元中。的内容写入到该内存单元中。SWP , , 28TM28字节数据交换指令字节数据交换指令 nSWPB是对字节操作指令,用于将一个寄存器是对字节操作指令,用于将一个寄存器Rn为为内存地址的字节数据单元的内容读取到一个寄存器内存地址的字节数据单元的内容读取到一个寄存器Rd中

16、,寄存器中,寄存器Rd的高的高24设置为设置为0,同时将另一个寄,同时将另一个寄存器存器Rm的低的低8位数值写入到该内存单元中位数值写入到该内存单元中 SWPB , ,例:例:SWP R0,R1,R2SWP R0,R0,R2SWPB R0,R1,R229TM294.6 程序状态寄存器程序状态寄存器PSR访问指令访问指令n程序状态寄存器程序状态寄存器PSR访问指令用来实现通用访问指令用来实现通用寄存器与程序状态寄存器之间的数据传输,寄存器与程序状态寄存器之间的数据传输,共有两条:读程序状态寄存器指令共有两条:读程序状态寄存器指令MRS和写和写程序状态寄存器指令程序状态寄存器指令MSR。n这类指令

17、可以用来修改这类指令可以用来修改CPSR,通常是通过,通常是通过“读取读取-修改修改-写回写回”的操作序列来实现。的操作序列来实现。30TM30读程序状态寄存器指令读程序状态寄存器指令 nMRS指令用于指令用于将状态寄存器的内容传送到通将状态寄存器的内容传送到通用寄存器中。用寄存器中。这是程序获得程序状寄存器这是程序获得程序状寄存器PSR数据的唯一方法。数据的唯一方法。 MRS , CPSRMRS , SPSR31TM31写程序状态寄存器指令写程序状态寄存器指令 nMSR指令用于指令用于将通用寄存器的内容或一个立即数将通用寄存器的内容或一个立即数传传送到程序状态寄存器中送到程序状态寄存器中,实

18、现对程序状态寄存器的修,实现对程序状态寄存器的修改。改。 MSR CPSR_, MSR SPSR_, 32TM32n fields设置状态寄存器中需要操作的位域。状态寄存器分为设置状态寄存器中需要操作的位域。状态寄存器分为4个个8位的域:位的域: bits31:24为条件标志位域,用为条件标志位域,用f表示;表示; bits23:16状态位域,用状态位域,用s表示;表示; bits15:8扩展位域,用扩展位域,用x表示;表示; bits7:0控制位域,用控制位域,用c表示;表示;33TM3334TM3435TM354.8 异常产生指令异常产生指令ARM处理器所支持的异常产生指令有两条:处理器所

19、支持的异常产生指令有两条:n软中断指令软中断指令SWIn断点调试指令断点调试指令BKPT(用于用于ARM V5及以上的版本及以上的版本)36TM36软中断指令软中断指令 nSWI(SoftWare Interrupt)指令用于产生软件指令用于产生软件中断,它将处理器置于监控模式中断,它将处理器置于监控模式(SVC),从,从地址地址0 x08开始执行指令。开始执行指令。nARM通过这种机制实现用户模式对操作系统通过这种机制实现用户模式对操作系统中特权模式的程序调用,也就是使用户程序中特权模式的程序调用,也就是使用户程序调用操作系统的系统程序成为可能。调用操作系统的系统程序成为可能。 37TM37

20、n语法格式:语法格式:SWI n操作系统在操作系统在SWI的异常处理程序中提供相应的系统服务,指的异常处理程序中提供相应的系统服务,指令中令中24位的立即数指定用户程序调用系统例程的类型,相关位的立即数指定用户程序调用系统例程的类型,相关参数通过通用寄存器传递。参数通过通用寄存器传递。38TM38执行过程:执行过程:n将将SWI后面指令地址保存到后面指令地址保存到R14_svc;n将将CPSR保存到保存到SPSR_svc;n进入监控模式进入监控模式,将将CPSR4:0设置为设置为0b10011;将将CPSR7设置为设置为1,禁止禁止IRQ;n将将PC设置为设置为0 x08,并且开始执行那里的指

21、令。并且开始执行那里的指令。n返回时:返回时:MOVS PC,R1439TM39断点中断指令断点中断指令nBKPT (BreakPoinT)指令产生软件断点中断,可用指令产生软件断点中断,可用于程序的调试。当于程序的调试。当BKPT指令执行时,处理器停止指令执行时,处理器停止执行下面的指令并进入相应的执行下面的指令并进入相应的BKPT入口程序入口程序 40TM第第4章章ARM指令集系统指令集系统The End41TM41n算术逻辑运算指令的应用n跳转跳转指令的应用nLoad/Store指令的应用n批量Load/store指令的应用n交换指令的应用n与系统相关的一些指令的应用 ARM指令功能段举

22、例指令功能段举例42TM42n算术逻辑运算指令的应用1. 位操作:将位操作:将R2中的高中的高8位数据传送到位数据传送到R3的低的低8位中位中MOV R0, R2, LSR #24ORR R3, R0, R3, LSL #82. 乘法操作:乘法操作:MOV R0, R0, LSL #nADD R0, R0, R0, LSL #nRSB R0, R0, R0, LSL #nADD R0, R0, R0, LSL #2ADD R0, R1, R0, LSL #1 ARM指令功能段举例指令功能段举例43TM43n算术逻辑运算指令的应用3. 64位运算R0和和R1中存放了一个中存放了一个64位数据,其

23、中位数据,其中R0中为低中为低32位;位;R2和和R3中存放了另一个中存放了另一个64位数,位数,R2中为低中为低32位。位。求这两个数的和,结果保存在求这两个数的和,结果保存在R0和和R1中。中。ADDS R0,R0,R2ADC R1,R1,R3如何实现减法?如何实现减法? ARM指令功能段举例指令功能段举例44TM44n算术逻辑运算指令的应用4. 转换内存中数据存储方式转换内存中数据存储方式:设设R0的的4个字节存储的数据分别为个字节存储的数据分别为A、B、C、D,要求用一段程序实现将它们的次序反置。要求用一段程序实现将它们的次序反置。EOR R1,R0,R0,ROR #16BIC R1,

24、R1,#0 xFF0000MOV R0,R0, ROR #8EOR R0, R0, R1, LSR #8 ARM指令功能段举例指令功能段举例45TM45n算术逻辑运算指令的应用4. 转换内存中数据存储方式转换内存中数据存储方式:设设R0的的4个字节存储的数据分别为个字节存储的数据分别为A、B、C、D,要求用一段程序实现将它们的次序反置。要求用一段程序实现将它们的次序反置。MOV R2, #0 xFFORR R2,R2,#0 xFF0000AND R1,R2,R0AND R0,R2,R0, ROR #24ORR R0,R0,R1,ROR #8 ARM指令功能段举例指令功能段举例46TM46n跳转

25、指令的应用跳转指令的应用 用用ARM汇编程序完成以下汇编程序完成以下C语言程序描述的功能语言程序描述的功能(求求最大公约数):最大公约数):int gcd(int a,int b)while (a!=b)if (ab)a=a-b;elseb=b-a;return a; ARM指令功能段举例指令功能段举例47TM47n跳转指令的应用跳转指令的应用设执行前设执行前R0中存放中存放a, R1中存入中存入b,代码执行后,代码执行后R0中中存放存放a和和b的最大公约数。的最大公约数。gcdCMP R0,R1SUBGT R0,R0,R1SUBLT R1,R1,R0BNE gcdMOV PC,LR ARM指令功能段举例指令功能段举例48TM48n跳转指令的应用跳转指令的应用2. 条件判断语句条件判断语句:if(a=0 |b=1)c=d+eCMP R0, #0CMPNE R1,#1ADDEQ R2,R3,R4 ARM指令功能段举例指令功能段举例49TM49n跳转指令的应用3. 循环语句

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论