cortex-m34基础4指令系统-实时嵌入式-硬件基础课件.pptx

上传人(卖家):三亚风情 文档编号:3376915 上传时间:2022-08-25 格式:PPTX 页数:89 大小:2.64MB
下载 相关 举报
cortex-m34基础4指令系统-实时嵌入式-硬件基础课件.pptx_第1页
第1页 / 共89页
cortex-m34基础4指令系统-实时嵌入式-硬件基础课件.pptx_第2页
第2页 / 共89页
cortex-m34基础4指令系统-实时嵌入式-硬件基础课件.pptx_第3页
第3页 / 共89页
cortex-m34基础4指令系统-实时嵌入式-硬件基础课件.pptx_第4页
第4页 / 共89页
cortex-m34基础4指令系统-实时嵌入式-硬件基础课件.pptx_第5页
第5页 / 共89页
点击查看更多>>
资源描述

1、电子与信息工程学院1 1、ARM v7概述 2.Cortex-M3基础 2.1结构框图 2.2操作模式、特权等级 2.3存器组 2.4流水线 2.5总线 2.6存储系统 2.7中断和异常 2.8SYSTICK定时器主要内容主要内容 2.9低功耗 2.10复位 2.11MPU 2.12调试架构 2.13调试部件 3.Cortex-M3指令集 3.1指令集综述 3.2寻址方式 3.3指令集介绍 4.K60硬件基础电子与信息工程学院2 1、ARM v7概述 2.Cortex-M3基础 2.1结构框图 2.2操作模式、特权等级 2.3存器组 2.4流水线 2.5总线 2.6存储系统 2.7中断和异常

2、2.8SYSTICK定时器主要内容主要内容 2.9低功耗 2.10复位 2.11MPU 2.12调试架构 2.13调试部件 3.Cortex-M3指令集 3.1指令集综述 3.2寻址方式 3.3指令集介绍 4.K60硬件基础电子与信息工程学院3 1、ARM v7概述 2.Cortex-M3基础 2.1结构框图 2.2操作模式、特权等级 2.3存器组 2.4流水线 2.5总线 2.6存储系统 2.7中断和异常 2.8SYSTICK定时器主要内容主要内容 2.9低功耗 2.10复位 2.11MPU 2.12调试架构 2.13调试部件 3.Cortex-M3指令集 3.1指令集综述 3.2寻址方式

3、3.3指令集介绍 4.K60硬件基础电子与信息工程学院1.CM3程序的文件类型:CM3开发中大部分程序使用C语言编写,文件类型为“”;:涉及到硬件底层操作的代码有时必须使用汇编语言编写,文件类型为“”。2.为什么学习CM3指令系统:电子与信息工程学院5概述概述电子与信息工程学院1.处理器的寻址方式;2.指令的特点;3.指令的种类,它能完成哪些功能。学习重点电子与信息工程学院7 1、ARM v7概述 2.Cortex-M3基础 2.1结构框图 2.2操作模式、特权等级 2.3存器组 2.4流水线 2.5总线 2.6存储系统 2.7中断和异常 2.8SYSTICK定时器主要内容主要内容 2.9低功

4、耗 2.10复位 2.11MPU 2.12调试架构 2.13调试部件 3.Cortex-M3指令集 3.1指令集综述 3.2寻址方式 3.3指令集介绍 4.K60硬件基础电子与信息工程学院3.2 ARM处理器寻址方式 寻址方式分类寻址方式分类 寻址方式是根据指令中给出的地址码字段来实现寻找真实操作数地址的方式。ARM处理器具有8种基本寻址方式。1.寄存器寻址;2.立即寻址;3.寄存器移位寻址;4.寄存器间接寻址;5.基址寻址;6.多寄存器寻址;7.堆栈寻址;8.相对寻址。电子与信息工程学院 操作数的值在寄存器中,指令中的地址码字段指出的是寄存器编号,指令执行时直接取出寄存器值来操作。寄存器寻址

5、指令举例如下:MOV R1,R2 ;将R2的值存入R1 SUB R0,R1,R2 ;将R1的值减去R2的值,结果保存到R0 0 xAA0 x55R2R1 寻址方式分类寻址方式分类寄存器寻址寄存器寻址MOV R1,R2MOV R1,R20 xAA3.2 ARM处理器寻址方式电子与信息工程学院 立即寻址指令中的操作码字段后面的地址码部分即是操作数本身,也就是说,数据就包含在指令当中,取出指令也就取出了可以立即使用的操作数(这样的数称为立即数)。立即寻址指令举例如下:SUBSR0,R0,#1 ;R0减1,结果放入R0,并且影响标志位MOVR0,#0 xFF000 ;将立即数0 xFF000装入R0寄

6、存器 0 x55R0MOV R0,#0 xFF00程序存储 寻址方式分类寻址方式分类立即寻址立即寻址MOV R0,#0 xFF00MOV R0,#0 xFF000 xFF00从代码中获得数据3.2 ARM处理器寻址方式电子与信息工程学院 寄存器移位寻址是ARM指令集特有的寻址方式。当第2个操作数是寄存器移位方式时,第2个寄存器操作数在与第1个操作数结合之前,选择进行移位操作。寄存器移位寻址指令举例如下:MOVR0,R2,LSL#3 ;R2的值左移3位,结果放入R0,;即是R0=R28 ANDSR1,R1,R2,LSL R3 ;R2的值左移R3位,然后和R1相 ;“与”操作,结果放入R10 x5

7、5R0R2 0 x01 寻址方式分类寻址方式分类寄存器移位寻址寄存器移位寻址MOV R0,R2,LSL#3MOV R0,R2,LSL#30 x080 x08逻辑左移3位3.2 ARM处理器寻址方式电子与信息工程学院 寄存器间接寻址指令中的地址码给出的是一个通用寄存器的编号,所需的操作数保存在寄存器指定地址的存储单元中,即寄存器为操作数的地址指针。寄存器间接寻址指令举例如下:LDRR1,R2;将R2指向的存储单元的数据读出;保存在R1中 SWPR1,R1,R2;将寄存器R1的值和R2指定的存储;单元的内容交换 0 x55R0R2 0 x400000000 xAA0 x40000000 寻址方式分

8、类寻址方式分类寄存器间接寻址寄存器间接寻址LDR R0,R2LDR R0,R20 xAA3.2 ARM处理器寻址方式电子与信息工程学院 基址寻址就是将基址寄存器的内容与指令中给出的偏移量相加,形成操作数的有效地址。基址寻址用于访问基址附近的存储单元,常用于查表、数组操作、功能部件寄存器访问等。基址寻址指令举例如下:LDRR2,R3,#0 x0C ;读取R3+0 x0C地址上的存储单元 ;的内容,放入R2 STRR1,R0,#-4!;先R0=R0-4,然后把R1的值寄存 ;到保存到R0指定的存储单元 寻址方式分类寻址方式分类基址寻址基址寻址0 x55R2R3 0 x400000000 xAA0

9、x4000000CLDR R2,R3,#0 x0CLDR R2,R3,#0 x0C0 xAA将R3+0 x0C作为地址装载数据3.2 ARM处理器寻址方式电子与信息工程学院 多寄存器寻址一次可传送几个寄存器值,允许一条指令传送16个寄存器的任何子集或所有寄存器。多寄存器寻址指令举例如下:LDMIAR1!,R2-R7,R12 ;将R1指向的单元中的数据读出到 ;R2R7、R12中(R1自动加1)STMIAR0!,R2-R7,R12 ;将寄存器R2R7、R12的值保 ;存到R0指向的存储;单元中 ;(R0自动加1)0 x40000000R1R2 0 x?0 x010 x400000000 x?R3

10、R4 0 x?R6 0 x?0 x020 x030 x040 x400000040 x400000080 x4000000C存储器 寻址方式分类寻址方式分类多寄存器寻址多寄存器寻址LDMIA R1!,R2-R4,R6 LDMIA R1!,R2-R4,R6 0 x010 x020 x030 x040 x400000103.2 ARM处理器寻址方式电子与信息工程学院 堆栈是一个按特定顺序进行存取的存储区,操作顺序为“后进先出”。堆栈寻址是隐含的,它使用一个专门的寄存器(堆栈指针)指向一块存储区域(堆栈),指针所指向的存储单元即是堆栈的栈顶。存储器堆栈可分为两种:向上生长:向高地址方向生长,称为递增

11、堆栈向下生长:向低地址方向生长,称为递减堆栈 寻址方式分类寻址方式分类堆栈寻址堆栈寻址3.2 ARM处理器寻址方式电子与信息工程学院 寻址方式分类寻址方式分类堆栈寻址堆栈寻址栈底栈顶栈区SP堆栈存储区栈顶栈底栈区SP向下增长向上增长0 x123456780 x12345678堆栈压栈堆栈压栈3.2 ARM处理器寻址方式电子与信息工程学院栈顶SP栈顶SP栈底空堆栈栈底满堆栈堆栈指针指向最后压入的堆栈的有效数据项,称为满堆栈;堆栈指针指向下一个待压入数据的空位置,称为空堆栈。寻址方式分类寻址方式分类堆栈寻址堆栈寻址0 x123456780 x12345678栈顶SP0 x12345678栈顶SP压

12、栈压栈3.2 ARM处理器寻址方式电子与信息工程学院所以可以组合出四种类型的堆栈方式:满递增:堆栈向上增长,堆栈指针指向内含有效数据项的最高地址。指令如LDMFA、STMFA等;空递增:堆栈向上增长,堆栈指针指向堆栈上的第一个空位置。指令如LDMEA、STMEA等;满递减:堆栈向下增长,堆栈指针指向内含有效数据项的最低地址。指令如LDMFD、STMFD等;空递减:堆栈向下增长,堆栈指针向堆栈下的第一个空位置。指令如LDMED、STMED等。寻址方式分类寻址方式分类堆栈寻址堆栈寻址3.2 ARM处理器寻址方式电子与信息工程学院 相对寻址是基址寻址的一种变通。由程序计数器PC提供基准地址,指令中的

13、地址码字段作为偏移量,两者相加后得到的地址即为操作数的有效地址。相对寻址指令举例如下:BLSUBR1;调用到SUBR1子程序BEQLOOP;条件跳转到LOOP标号处.LOOPMOVR6,#1.SUBR1.寻址方式分类寻址方式分类相对寻址相对寻址3.2 ARM处理器寻址方式电子与信息工程学院20 1、ARM v7概述 2.Cortex-M3基础 2.1结构框图 2.2操作模式、特权等级 2.3存器组 2.4流水线 2.5总线 2.6存储系统 2.7中断和异常 2.8SYSTICK定时器主要内容主要内容 2.9低功耗 2.10复位 2.11MPU 2.12调试架构 2.13调试部件 3.Corte

14、x-M3指令集 3.1指令集综述 3.2寻址方式 3.3指令集介绍 4.K60硬件基础电子与信息工程学院3.3指令集介绍 3.3.1 3.3.1汇编基础汇编基础 3.3.2 3.3.2指指令集令集 3.3.3CM3 3.3.3CM3中的前卫指令中的前卫指令电子与信息工程学院 简单简单的程序的程序;文件名:TEST1.S;功能:实现两个寄存器相加;说明:使用ARMulate软件仿真调试 AREAExample1,CODE,READONLY ;声明代码段Example1 ENTRY ;标识程序入口 CODE32 ;声明32位ARM指令START MOVR0,#0 ;设置参数 MOVR1,#10LO

15、OPBLADD_SUB ;调用子程序ADD_SUB BLOOP ;跳转到LOOPADD_SUB ADDSR0,R0,R1 ;R0=R0+R1 MOVPC,LR ;子程序返回 END ;文件结束 使用“;”进行注释标号顶格写实际代码段声明文件结束电子与信息工程学院3.3指令集介绍 3.3.13.3.1汇编基础汇编基础 3.3.2 3.3.2指指令集令集 3.3.3CM3 3.3.3CM3中的前卫指令中的前卫指令电子与信息工程学院243.3.13.3.1汇编基础汇编基础1 1、基本语法、基本语法标号标号 操作码操作码 操作数操作数1 1,操作数,操作数2 2,;注释;注释注释:注释:1 1)标号可

16、选,如果有,)标号可选,如果有,必须顶格写必须顶格写。标号的作用是让汇编。标号的作用是让汇编器来计算程序转移地址。器来计算程序转移地址。2 2)操作码是指令的助记符,前面)操作码是指令的助记符,前面必须至少有一个空白符必须至少有一个空白符。3 3)第)第1 1操作数,通常给出本指令的执行结果的存储位置。操作数,通常给出本指令的执行结果的存储位置。4 4)第)第2 2操作数以后的操作数,通常是参与运算的数据或其操作数以后的操作数,通常是参与运算的数据或其位置。位置。5 5);后的为注释,不影响汇编器的工作。);后的为注释,不影响汇编器的工作。电子与信息工程学院252 2、汇编语言中的后缀、汇编语

17、言中的后缀1 1)条件执行后缀通常用于)条件执行后缀通常用于跳转指令跳转指令;2 2)如果其他指令在)如果其他指令在IF-THENIF-THEN指令块指令块中,也可以使用条件执行中,也可以使用条件执行后;后;3 3)条件后缀和)条件后缀和S S后缀可同时使用。后缀可同时使用。电子与信息工程学院263 3、统一汇编语言、统一汇编语言ULAULA 1 1)为了支持)为了支持Thumb-2Thumb-2,并且最大程度的发挥其功能,并且最大程度的发挥其功能,ARMARM汇编器引入了一个汇编器引入了一个“统一汇编语言统一汇编语言”ULAULA,同时支持,同时支持1616位和位和3232位指令。位指令。2

18、 2)在)在ULAULA语法中,指令使用后缀语法中,指令使用后缀s s才可以影响才可以影响APSRAPSR。3 3)在)在 UAL UAL 下,汇编器能主动决定下,汇编器能主动决定用用1616位指令或位指令或3232位指位指令,令,也可以手工也可以手工指定;指定;电子与信息工程学院3.3指令集介绍 3.3.1 3.3.1汇编基础汇编基础 3.3.23.3.2指指令集令集 3.3.3CM3 3.3.3CM3中的前卫指令中的前卫指令电子与信息工程学院 存储器访问指令存储器访问指令 算术运算指令算术运算指令 逻辑运算指令逻辑运算指令 移位、循环指令移位、循环指令 展开指令展开指令 数据反转指令数据反

19、转指令 位域处理和操作指令位域处理和操作指令 条件跳转条件跳转 指令屏障和存储器屏障指令指令屏障和存储器屏障指令 饱和运算指令饱和运算指令28电子与信息工程学院 存储器访问指令后缀装载指令:保存指令:B:从/向指定位置加载/存储字节H:从/向指定位置加载/存储半字无:从/向指定位置加载/存储字EX:排他性加载/存储D:从/向指定位置加载/存储双字电子与信息工程学院 存储器访问指令地址形式装载指令:保存指令:立即数:立即数可以是一个无符号的数值。这个数据可以加到基址寄存器,也可以从基址寄存器中减去这个数值。如:LDR R1,R0,#0 x12 寄存器:寄存器中的数值可以加到基址寄存器,也可以从基

20、址寄存器中减去这个数值。如:LDR R1,R0,R2 寄存器及移位常数:寄存器移位后的值可以加到基址寄存器,也可以从基址寄存器中减去这个数值。如:LDR R1,R0,R2,LSL#2电子与信息工程学院 存储器访问指令寻址方式装载指令:保存指令:零偏移:如:LDR Rd,Rn前索引偏移:如:LDR Rd,Rn,#0 x04!程序相对偏移:如:LDR Rd,labe1 后索引偏移:如:LDR Rd,Rn,#0 x04电子与信息工程学院存储器访问指令单寄存器加载/存储 电子与信息工程学院0 x55R2R5 0 x400000000 x123456780 x40000000存储器地址应用示例:LDRR

21、2,R5 ;将R5指向地址的字数据存入R20 x12345678 ARM存储器访问指令单寄存器加载应用电子与信息工程学院0 x12345678R1R2 0 x400000000 x?0 x40000004存储器地址应用示例:STRR1,R2,#0 x04 ;将R1的数据存储到R0+0 x04地址0 x12345678+4 ARM存储器访问指令单寄存器保存应用电子与信息工程学院35电子与信息工程学院 存储器存储器访问指令访问指令多寄存器存取多寄存器存取装载指令:存储指令:存储器源地址目标寄存器1目标寄存器n存储器目标地址源寄存器1源寄存器n电子与信息工程学院 存储器存储器访问指令访问指令多寄存器

22、存取多寄存器存取装载指令:存储指令:xxLDM/STM指令搭配不同的后缀实现不同方式地址增长方式:IA:每次传送后地址加4DB:每次传送前地址减4电子与信息工程学院存储器访问指令多寄存器加载/存储 电子与信息工程学院 ARM存储器访问指令多寄存器存取数据块传送指令操作过程如右图所示,其中R1为指令执行前的基址寄存器,R1则为指令执行后的基址寄存器。R5R6R7R1 R1 指令STMIA R1!,R5-R74008H4004H4000H4014H4010H400CHR5R6R7R1 R1 指令STMDB R1!,R5-R74008H4004H4000H4014H4010H400CH电子与信息工程

23、学院0 x40000000R1R2 0 x?0 x010 x400000000 x?R3R4 0 x?R6 0 x?0 x020 x030 x040 x400000040 x400000080 x4000000C存储器0 x010 x020 x030 x040 x40000010应用示例:LDMIA R1!,R2-R4,R6 将R1指向的内存数据读取到R0-R4和R6寄存器中 存储器访问指令多寄存器存取电子与信息工程学院41另外两种存储器操作为栈的PUSH和POP.PUSH R0,R4-R7,R9POP R2,R3电子与信息工程学院42 存储器访问指令存储器访问指令 算术运算指令算术运算指令

24、逻辑运算指令逻辑运算指令 移位、循环指令移位、循环指令 展开指令展开指令 数据反转指令数据反转指令 位域处理和操作指令位域处理和操作指令 条件跳转条件跳转 指令屏障和存储器屏障指令指令屏障和存储器屏障指令 饱和运算指令饱和运算指令电子与信息工程学院常见的算术四则运算指令常见的算术四则运算指令 电子与信息工程学院44 存储器访问指令存储器访问指令 算术运算指令算术运算指令 逻辑运算指令逻辑运算指令 移位、循环指令移位、循环指令 展开指令展开指令 数据反转指令数据反转指令 位域处理和操作指令位域处理和操作指令 条件跳转条件跳转 指令屏障和存储器屏障指令指令屏障和存储器屏障指令 饱和运算指令饱和运算

25、指令电子与信息工程学院电子与信息工程学院46 存储器访问指令存储器访问指令 算术运算指令算术运算指令 逻辑运算指令逻辑运算指令 移位、循环指令移位、循环指令 展开指令展开指令 数据反转指令数据反转指令 位域处理和操作指令位域处理和操作指令 条件跳转条件跳转 指令屏障和存储器屏障指令指令屏障和存储器屏障指令 饱和运算指令饱和运算指令电子与信息工程学院47移位操作指令 电子与信息工程学院电子与信息工程学院49 存储器访问指令存储器访问指令 算术运算指令算术运算指令 逻辑运算指令逻辑运算指令 移位、循环指令移位、循环指令 展开指令展开指令 数据反转指令数据反转指令 位域处理和操作指令位域处理和操作指

26、令 条件跳转条件跳转 指令屏障和存储器屏障指令指令屏障和存储器屏障指令 饱和运算指令饱和运算指令电子与信息工程学院50带符号展开指令 SXTB Rd,Rm;Rd=signext(Rm7:0)SXTH Rd,Rm;Rd=signext(Rm15:0)电子与信息工程学院51 存储器访问指令存储器访问指令 算术运算指令算术运算指令 逻辑运算指令逻辑运算指令 移位、循环指令移位、循环指令 展开指令展开指令 数据反转指令数据反转指令 位域处理和操作指令位域处理和操作指令 条件跳转条件跳转 指令屏障和存储器屏障指令指令屏障和存储器屏障指令 饱和运算指令饱和运算指令电子与信息工程学院52数据反转指令数据反转

27、指令电子与信息工程学院53 存储器访问指令存储器访问指令 算术运算指令算术运算指令 逻辑运算指令逻辑运算指令 移位、循环指令移位、循环指令 展开指令展开指令 数据反转指令数据反转指令 位域处理和操作指令位域处理和操作指令 条件跳转条件跳转 指令屏障和存储器屏障指令指令屏障和存储器屏障指令 饱和运算指令饱和运算指令电子与信息工程学院54位域处理指令位域处理指令电子与信息工程学院55电子与信息工程学院56电子与信息工程学院57 存储器访问指令存储器访问指令 算术运算指令算术运算指令 逻辑运算指令逻辑运算指令 移位、循环指令移位、循环指令 展开指令展开指令 数据反转指令数据反转指令 位域处理和操作指

28、令位域处理和操作指令 条件跳转条件跳转 指令屏障和存储器屏障指令指令屏障和存储器屏障指令 饱和运算指令饱和运算指令电子与信息工程学院58跳转依据跳转依据在在CM3CM3中,下列指令可以更新中,下列指令可以更新PSR PSR 中的标志:中的标志:16 16位算术逻辑指令位算术逻辑指令 32 32位位带带S S后缀的算术逻辑指令后缀的算术逻辑指令 比较指令(如,比较指令(如,CMP/CMNCMP/CMN)和测试指令(如)和测试指令(如 TST/TEQ TST/TEQ)直接写直接写 PSR/APSR(MSR PSR/APSR(MSR 指令指令)电子与信息工程学院操作码条件助记符标志含义0000EQZ

29、=1相等0001NEZ=0不相等0010CS/HSC=1无符号数大于或等于0011CC/LOC=0无符号数小于0100MIN=1负数0101PLN=0正数或零0110VSV=1溢出0111VCV=0没有溢出1000HIC=1,Z=0无符号数大于1001LSC=0,Z=1无符号数小于或等于1010GEN=V有符号数大于或等于 1011LTN!=V有符号数小于 1100GTZ=0,N=V有符号数大于 1101LEZ=1,N!=V有符号数小于或等于 1110AL任何无条件执行(指令默认条件)1111NV任何从不执行(不要使用)指令条件码表电子与信息工程学院60 BEQ label ;BEQ labe

30、l ;当当 Z=1Z=1时转移时转移 CMP R0,R1 ;比较比较R0,R1 R0,R1 IT TET GT ;If R0R1 ThenThen(T T代表代表ThenThen,E E代表代表ElseElse)MOVGT R2,R0 MOVLE R2,R0 MOVGT R3,R1 MOVGT R3,R1 电子与信息工程学院61 存储器访问指令存储器访问指令 算术运算指令算术运算指令 逻辑运算指令逻辑运算指令 移位、循环指令移位、循环指令 展开指令展开指令 数据反转指令数据反转指令 位域处理和操作指令位域处理和操作指令 条件跳转条件跳转 指令屏障和存储器屏障指令指令屏障和存储器屏障指令 饱和运

31、算指令饱和运算指令电子与信息工程学院62 隔离指令在一些结构比较复杂的存储器系统中是必要的。在隔离指令在一些结构比较复杂的存储器系统中是必要的。在这类系统中,如果没有必要的隔离,会导致系统发生紊乱危象这类系统中,如果没有必要的隔离,会导致系统发生紊乱危象(race conditionrace condition),(相当于数电中的),(相当于数电中的“竞争与冒险竞争与冒险”)。)。如果如果RAM的访问是带缓冲的,并且写完之后马上读,就必须让它的访问是带缓冲的,并且写完之后马上读,就必须让它“喘喘口气口气”用用DMB指令来隔离,以保证缓冲中的数据已经落实到指令来隔离,以保证缓冲中的数据已经落实到

32、RAM中。中。DSB比比DMB更保险(当然也是有执行代价的),它是宁可错杀也不漏更保险(当然也是有执行代价的),它是宁可错杀也不漏网网清空了写缓冲,使得任何它后面的指令,不管要不要使用先前的存清空了写缓冲,使得任何它后面的指令,不管要不要使用先前的存储器访问结果,通通等待访问完成。储器访问结果,通通等待访问完成。如果某个程序从下一条要执行的指令处更新了自己,但是先前的旧指令如果某个程序从下一条要执行的指令处更新了自己,但是先前的旧指令已经被预取到流水线中去了,此时就必须清洗流水线,把旧版本的指令洗出已经被预取到流水线中去了,此时就必须清洗流水线,把旧版本的指令洗出去,再预取新版本的指令。因此,

33、必须在被更新代码段的前面使用去,再预取新版本的指令。因此,必须在被更新代码段的前面使用ISB,以,以保证旧的代码从流水线中被清洗出去,不再有机会执行。保证旧的代码从流水线中被清洗出去,不再有机会执行。电子与信息工程学院63 存储器访问指令存储器访问指令 算术运算指令算术运算指令 逻辑运算指令逻辑运算指令 移位、循环指令移位、循环指令 展开指令展开指令 数据反转指令数据反转指令 位域处理和操作指令位域处理和操作指令 条件跳转条件跳转 指令屏障和存储器屏障指令指令屏障和存储器屏障指令 饱和运算指令饱和运算指令电子与信息工程学院64 CM3CM3中的饱和运算指令分为两种中的饱和运算指令分为两种:1

34、1)“没有直流分量没有直流分量”的交流信号饱和的交流信号饱和带符号饱和带符号饱和运运算;算;2 2)无符号)无符号饱和运算则类似于饱和运算则类似于“削顶失真单向导通削顶失真单向导通”。电子与信息工程学院65指令名指令名 功能描述功能描述 SSAT.W Rd,#imm5,Rn,shift 以带符号数的边界进行饱和运算(交流)USAT.W Rd,#imm5,Rn,shift 以无符号数的边界进行饱和运算(带纹波的直流)电子与信息工程学院3.3指令集介绍 3.3.1 3.3.1汇编基础汇编基础 3.3.2 3.3.2指指令集令集 3.3.3CM33.3.3CM3中的前卫指令中的前卫指令电子与信息工程

35、学院 MSR/MRS IF-THEN SDIV/UDIV REV/REVH/REVSH SXTB/SXTH/UXTB/UXTH UBFX/SBFX LDRD/STRD 表格跳转字节表格跳转字节/表格跳转半字表格跳转半字67电子与信息工程学院68MRS、MSR 专用特殊寄存器访问指令,只能在特权级状态下使用,专用特殊寄存器访问指令,只能在特权级状态下使用,APSRAPSR除外,除外,APSRAPSR可以在用户级状态下使用。可以在用户级状态下使用。MRS,;加载特殊功能寄存器的值到加载特殊功能寄存器的值到Rn MSR,;存储存储Rn的值到特殊功能寄存器的值到特殊功能寄存器 指定指定PSP进行更新的

36、例子:进行更新的例子:LDR R0,=0 x20008000 MSR PSP,R0 BX LR ;如果是从异常(如果是从异常(Handler模式)返回到用户线程模式,模式)返回到用户线程模式,则使用新的则使用新的PSP的值作为栈顶指针的值作为栈顶指针 实质上是替换了之前线程状态使用的实质上是替换了之前线程状态使用的PSP指针(所指向的内存地址空间)指针(所指向的内存地址空间)电子与信息工程学院69电子与信息工程学院 MSR/MRS IF-THEN SDIV/UDIV REV/REVH/REVSH SXTB/SXTH/UXTB/UXTH UBFX/SBFX LDRD/STRD 表格跳转字节表格跳

37、转字节/表格跳转半字表格跳转半字70电子与信息工程学院71 IF-THEN(IT)指令围起一个快,里面最多有4条指令,可以条件执行。IT指令已经带了一个“T”,因此还可以最多再带3个“T”或者“E”,并且对T和E的顺序没有要求,其中T对应条件成立时执行的语句,E对应条件不成立时执行的语句。电子与信息工程学院72电子与信息工程学院 MSR/MRS IF-THEN SDIV/UDIV REV/REVH/REVSH SXTB/SXTH/UXTB/UXTH UBFX/SBFX LDRD/STRD 表格跳转字节表格跳转字节/表格跳转半字表格跳转半字73电子与信息工程学院743232位硬件除法指令位硬件除

38、法指令电子与信息工程学院 MSR/MRS IF-THEN SDIV/UDIV REV/REVH/REVSH SXTB/SXTH/UXTB/UXTH UBFX/SBFX LDRD/STRD 表格跳转字节表格跳转字节/表格跳转半字表格跳转半字75电子与信息工程学院76 这些指令专门服务于大端模式和小端模式的转换,最常这些指令专门服务于大端模式和小端模式的转换,最常用于网络应用程序中(网络通常是大端,主机通常是小端)用于网络应用程序中(网络通常是大端,主机通常是小端)电子与信息工程学院77 RBIT RBIT 比前面的比前面的 REV REV 之流更精细,它是按位反转的,相之流更精细,它是按位反转的

39、,相当于把当于把 32 32 位整数的二进制表示法水平位整数的二进制表示法水平旋转旋转180180度。其格式为:度。其格式为:电子与信息工程学院 MSR/MRS IF-THEN SDIV/UDIV REV/REVH/REVSH SXTB/SXTH/UXTB/UXTH UBFX/SBFX LDRD/STRD 表格跳转字节表格跳转字节/表格跳转半字表格跳转半字78电子与信息工程学院79指令格式指令格式电子与信息工程学院 MSR/MRS IF-THEN SDIV/UDIV REV/REVH/REVSH SXTB/SXTH/UXTB/UXTH UBFX/SBFX LDRD/STRD 表格跳转字节表格跳

40、转字节/表格跳转半字表格跳转半字80电子与信息工程学院81UBFX/SBFX UBFX/SBFX 都是位段提取指令,语法格式为:都是位段提取指令,语法格式为:UBFX UBFX 从从 RnRn中取出任一个位段,执行零扩展后放到中取出任一个位段,执行零扩展后放到 RdRd中。中。SBFX SBFX 也抽取任意的位段,但是以带符号的方式进行扩展。也抽取任意的位段,但是以带符号的方式进行扩展。电子与信息工程学院 MSR/MRS IF-THEN SDIV/UDIV REV/REVH/REVSH SXTB/SXTH/UXTB/UXTH UBFX/SBFX LDRD/STRD 表格跳转字节表格跳转字节/表

41、格跳转半字表格跳转半字82电子与信息工程学院836464位数据加载位数据加载/存储指令存储指令电子与信息工程学院 MSR/MRS IF-THEN SDIV/UDIV REV/REVH/REVSH SXTB/SXTH/UXTB/UXTH UBFX/SBFX LDRD/STRD 表格跳转字节表格跳转字节/表格跳转半字(表格跳转半字(TBB/TBH)84电子与信息工程学院85 TBB TBB(查表跳转字节范围的偏移量)指令和(查表跳转字节范围的偏移量)指令和TBHTBH(查表跳(查表跳转半字范围的偏移量)指令,分别用于从一个字节数组表中转半字范围的偏移量)指令,分别用于从一个字节数组表中查找转移地址

42、,和从半字数组表中查找转移地址。查找转移地址,和从半字数组表中查找转移地址。TBB TBB和和TBHTBH只能做前向跳转,即偏移量只能是无符号整数。只能做前向跳转,即偏移量只能是无符号整数。因为因为CM3CM3的指令至少是按半字对齐的,表中的数值都是的指令至少是按半字对齐的,表中的数值都是在左移一位后才作为前向跳转的偏移量的。又因为在左移一位后才作为前向跳转的偏移量的。又因为PCPC的值为的值为当前地址当前地址+4+4,故,故TBBTBB的跳转范围可达的跳转范围可达255255*2+4=5142+4=514;TBHTBH的跳的跳转范围更可高达转范围更可高达6553565535*2+4=128KB+22+4=128KB+2。RnRn指向跳转表的基质,指向跳转表的基质,RmRm则给出表中元素的下标。则给出表中元素的下标。电子与信息工程学院86电子与信息工程学院87电子与信息工程学院88电子与信息工程学院89THE END.

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(cortex-m34基础4指令系统-实时嵌入式-硬件基础课件.pptx)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|