嵌入式系统设计3

上传人:hs****ma 文档编号:568278658 上传时间:2024-07-23 格式:PPT 页数:122 大小:1.42MB
返回 下载 相关 举报
嵌入式系统设计3_第1页
第1页 / 共122页
嵌入式系统设计3_第2页
第2页 / 共122页
嵌入式系统设计3_第3页
第3页 / 共122页
嵌入式系统设计3_第4页
第4页 / 共122页
嵌入式系统设计3_第5页
第5页 / 共122页
点击查看更多>>
资源描述

《嵌入式系统设计3》由会员分享,可在线阅读,更多相关《嵌入式系统设计3(122页珍藏版)》请在金锄头文库上搜索。

1、嵌入式系统设计嵌入式系统设计3第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 31 1 1 1 ARMARMARMARM嵌入式微处理器概述嵌入式微处理器概述嵌入式微处理器概述嵌入式微处理器概述3.1.1 3.1.1 3.1.1 3.1.1 嵌入式微处理器简介嵌入式微处理器简介嵌入式微处理器简介嵌入式微处理器简介 32323232位嵌入式微处理器的评价指标位嵌入式微处理器的评价指标位嵌入式微处理器的评价指标位嵌入式微处理器的评价指标1111功耗:功耗:功耗:功耗:有三种模式:运行模式有三种模式:运行模式有三种模式:运行模式有三种模式:运行模式节电模式节电模式

2、节电模式节电模式待机模式待机模式待机模式待机模式2222代码存储密度:代码存储密度:代码存储密度:代码存储密度: ARMARMARMARM使用使用使用使用32/1632/1632/1632/16位指令位指令位指令位指令3333集成度:集成度:集成度:集成度:简化系统设计方案简化系统设计方案简化系统设计方案简化系统设计方案4444多媒体加速:多媒体加速:多媒体加速:多媒体加速:增加增加增加增加JPECJPECJPECJPEC、MPEGMPEGMPEGMPEG指令指令指令指令第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 31 1 1 1 ARMARMARMA

3、RM嵌入式微处理器概述嵌入式微处理器概述嵌入式微处理器概述嵌入式微处理器概述3.1.2 3.1.2 3.1.2 3.1.2 ARMARMARMARM微处理器概述微处理器概述微处理器概述微处理器概述ARMARMARMARM(A A A Advanced dvanced dvanced dvanced R R R RISC ISC ISC ISC M M M Machineachineachineachine)ARMARMARMARM公司本身不生产芯片,只是设计芯片之后转让设计许可。公司本身不生产芯片,只是设计芯片之后转让设计许可。公司本身不生产芯片,只是设计芯片之后转让设计许可。公司本身不生产芯

4、片,只是设计芯片之后转让设计许可。1981198119811981年:年:年:年:ARMARMARMARM公司成立(公司成立(公司成立(公司成立(A A A Acon con con con R R R RISC ISC ISC ISC M M M Machineachineachineachine)1985198519851985年:第一款年:第一款年:第一款年:第一款ARMARMARMARM(ARM1ARM1ARM1ARM1)被设计出来被设计出来被设计出来被设计出来1986198619861986年:年:年:年:ARM2ARM2ARM2ARM2推出(实用化)推出(实用化)推出(实用化)推出

5、(实用化)1990199019901990年:另组建年:另组建年:另组建年:另组建A A A Advanced dvanced dvanced dvanced R R R RISC ISC ISC ISC M M M Machinesachinesachinesachines公司公司公司公司1998199819981998年:年:年:年:ARMARMARMARM公司上市公司上市公司上市公司上市 第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 31 1 1 1 ARMARMARMARM嵌入式微处理器概述嵌入式微处理器概述嵌入式微处理器概述嵌入式微处理器概述3

6、.1.2 3.1.2 3.1.2 3.1.2 ARMARMARMARM微处理器概述(续)微处理器概述(续)微处理器概述(续)微处理器概述(续)目前全世界众多半导体生产厂家获得授权生产目前全世界众多半导体生产厂家获得授权生产目前全世界众多半导体生产厂家获得授权生产目前全世界众多半导体生产厂家获得授权生产ARMARMARMARM微处理器微处理器微处理器微处理器包括:包括:包括:包括:MotorolaMotorolaMotorolaMotorola、IBMIBMIBMIBM、TITITITI、PhilipsPhilipsPhilipsPhilips、VLSIVLSIVLSIVLSI、AtmelAtm

7、elAtmelAtmel、SamsungSamsungSamsungSamsungARMARMARMARM特点:特点:特点:特点:1111低功耗特性低功耗特性低功耗特性低功耗特性2222架构灵活:架构灵活:架构灵活:架构灵活:ARMARMARMARM只提供一个核心,各公司可以增加资源只提供一个核心,各公司可以增加资源只提供一个核心,各公司可以增加资源只提供一个核心,各公司可以增加资源/ / / /指令指令指令指令3333得到主流系统软件支持:得到主流系统软件支持:得到主流系统软件支持:得到主流系统软件支持:WindowsCEWindowsCEWindowsCEWindowsCE、PalmOSP

8、almOSPalmOSPalmOS、SymbianSymbianSymbianSymbian目前:目前:目前:目前:ARMARMARMARM系列微处理器占据嵌入式处理器市场的系列微处理器占据嵌入式处理器市场的系列微处理器占据嵌入式处理器市场的系列微处理器占据嵌入式处理器市场的75%75%75%75%以上以上以上以上第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 31 1 1 1 ARMARMARMARM嵌入式微处理器概述嵌入式微处理器概述嵌入式微处理器概述嵌入式微处理器概述3.1.3 3.1.3 3.1.3 3.1.3 ARMARMARMARM架构版本与产

9、品系列架构版本与产品系列架构版本与产品系列架构版本与产品系列 版本版本版本版本对应微处理器系列对应微处理器系列对应微处理器系列对应微处理器系列 特点特点特点特点ARMv1ARMv1ARMv1ARMv1ARM1ARM1ARM1ARM1样机样机样机样机ARMv2ARMv2ARMv2ARMv2ARM2/ARM3ARM2/ARM3ARM2/ARM3ARM2/ARM3实用化实用化实用化实用化ARMv4ARMv4ARMv4ARMv4ARM7TDMIARM7TDMIARM7TDMIARM7TDMI应用最广泛的应用最广泛的应用最广泛的应用最广泛的ARMARMARMARM体系结构体系结构体系结构体系结构ARMv

10、5ARMv5ARMv5ARMv5ARM9E/ARM10EARM9E/ARM10EARM9E/ARM10EARM9E/ARM10E增加增加增加增加DSPDSPDSPDSP、JavaJavaJavaJava指令指令指令指令ARMv6ARMv6ARMv6ARMv6ARM11ARM11ARM11ARM11增加增加增加增加SIMDSIMDSIMDSIMD指令指令指令指令第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 31 1 1 1 ARMARMARMARM嵌入式微处理器概述嵌入式微处理器概述嵌入式微处理器概述嵌入式微处理器概述3.1.3 3.1.3 3.1.3 3

11、.1.3 ARMARMARMARM架构版本与产品系列(续)架构版本与产品系列(续)架构版本与产品系列(续)架构版本与产品系列(续)ARM7ARM7ARM7ARM7: 3 3 3 3级流水线(预取、译码、执行)级流水线(预取、译码、执行)级流水线(预取、译码、执行)级流水线(预取、译码、执行)ARM9ARM9ARM9ARM9: 5 5 5 5级流水线(预取、译码、执行、级流水线(预取、译码、执行、级流水线(预取、译码、执行、级流水线(预取、译码、执行、访存、写入访存、写入访存、写入访存、写入)ARM10ARM10ARM10ARM10:6 6 6 6级流水线(预取、级流水线(预取、级流水线(预取、

12、级流水线(预取、发送、发送、发送、发送、译码、执行、访存、写入)译码、执行、访存、写入)译码、执行、访存、写入)译码、执行、访存、写入)ARM11ARM11ARM11ARM11:8 8 8 8级流水线级流水线级流水线级流水线(预取、(预取、(预取、(预取、预取、预取、预取、预取、译码、发送、译码、发送、译码、发送、译码、发送、转换、转换、转换、转换、执行、访存、写入)执行、访存、写入)执行、访存、写入)执行、访存、写入)目前目前目前目前ARMARMARMARM水平:以水平:以水平:以水平:以ARM11ARM11ARM11ARM11为例为例为例为例工艺:工艺:工艺:工艺:90nM90nM90nM

13、90nM工作主频:工作主频:工作主频:工作主频:1GHZ1GHZ1GHZ1GHZ第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 32 2 2 2 ARMARMARMARM微处理器体系结构微处理器体系结构微处理器体系结构微处理器体系结构3.2.1 3.2.1 3.2.1 3.2.1 ARMARMARMARM微处理器体系结构概述微处理器体系结构概述微处理器体系结构概述微处理器体系结构概述 结构:结构:结构:结构:ARM7ARM7ARM7ARM7:冯冯冯冯. . . .诺依曼诺依曼诺依曼诺依曼结构结构结构结构ARM9ARM9ARM9ARM9及以上版本及以上版本及

14、以上版本及以上版本:哈佛哈佛哈佛哈佛结构结构结构结构支持的数据类型:支持的数据类型:支持的数据类型:支持的数据类型:1111字:字:字:字:32323232位位位位2222半字:半字:半字:半字:16161616位位位位3333字节:字节:字节:字节: 8 8 8 8位位位位地址:地址:地址:地址: 32323232位地址总线位地址总线位地址总线位地址总线最大寻址空间最大寻址空间最大寻址空间最大寻址空间4GB4GB4GB4GB第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 32 2 2 2 ARMARMARMARM微处理器体系结构微处理器体系结构微处理器体

15、系结构微处理器体系结构3.2.1 3.2.1 3.2.1 3.2.1 ARMARMARMARM微处理器体系结构概述微处理器体系结构概述微处理器体系结构概述微处理器体系结构概述 1.1.1.1.ALUALUALUALU逻辑结构逻辑结构逻辑结构逻辑结构2.2.2.2.桶形移位寄存器桶形移位寄存器桶形移位寄存器桶形移位寄存器3.3.3.3.高速乘法器高速乘法器高速乘法器高速乘法器4.4.4.4.浮点部件浮点部件浮点部件浮点部件5.5.5.5.控制器控制器控制器控制器第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 32 2 2 2 ARMARMARMARM微处理器

16、体系结构微处理器体系结构微处理器体系结构微处理器体系结构3.2.2 3.2.2 3.2.2 3.2.2 流水线流水线流水线流水线 1.1.1.1.流水线的设计流水线的设计流水线的设计流水线的设计2.2.2.2.ARMARMARMARM的的的的3 3 3 3级流水线级流水线级流水线级流水线3.3.3.3.ARMARMARMARM的的的的5 5 5 5级流水线级流水线级流水线级流水线第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 32 2 2 2 ARMARMARMARM微处理器体系结构微处理器体系结构微处理器体系结构微处理器体系结构3.2.3 3.2.3 3

17、.2.3 3.2.3 ARMARMARMARM的寄存器组织的寄存器组织的寄存器组织的寄存器组织 1.1.1.1.通用寄存器通用寄存器通用寄存器通用寄存器1 1 1 1)未分组寄存器未分组寄存器未分组寄存器未分组寄存器R0-R7R0-R7R0-R7R0-R7:所有所有所有所有模式下使用同一组寄存器模式下使用同一组寄存器模式下使用同一组寄存器模式下使用同一组寄存器2 2 2 2)分组寄存器分组寄存器分组寄存器分组寄存器R8-R14R8-R14R8-R14R8-R14:R8-R12R8-R12R8-R12R8-R12:FIQFIQFIQFIQ模式下使用模式下使用模式下使用模式下使用R8_fiq R1

18、2_fiqR8_fiq R12_fiqR8_fiq R12_fiqR8_fiq R12_fiq其余其余其余其余模式下使用模式下使用模式下使用模式下使用R8 R12R8 R12R8 R12R8 R12R13-R14R13-R14R13-R14R13-R14:系统系统系统系统/ / / /用户用户用户用户模式下使用模式下使用模式下使用模式下使用R13/R14R13/R14R13/R14R13/R14其余其余其余其余模式下使用对应该模式的模式下使用对应该模式的模式下使用对应该模式的模式下使用对应该模式的R13/R14R13/R14R13/R14R13/R14一般情况下:一般情况下:一般情况下:一般情

19、况下:R13R13R13R13作为堆栈指针作为堆栈指针作为堆栈指针作为堆栈指针SPSPSPSPR14R14R14R14作为子程序返回指针作为子程序返回指针作为子程序返回指针作为子程序返回指针LPLPLPLP第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 32 2 2 2 ARMARMARMARM微处理器体系结构微处理器体系结构微处理器体系结构微处理器体系结构3.2.3 3.2.3 3.2.3 3.2.3 ARMARMARMARM的寄存器组织的寄存器组织的寄存器组织的寄存器组织 1.1.1.1.通用寄存器通用寄存器通用寄存器通用寄存器3 3 3 3)R15R

20、15R15R15:程序指针,相当于:程序指针,相当于:程序指针,相当于:程序指针,相当于PCPCPCPC在在在在ARMARMARMARM状态:状态:状态:状态:PCPCPCPC的的的的D1D1D1D1、D0D0D0D0 = 00 = 00 = 00 = 00在在在在ThumbThumbThumbThumb状态:状态:状态:状态:PCPCPCPC的的的的D0D0D0D0 = 0 = 0 = 0 = 0由于由于由于由于ARMARMARMARM采用多级流水线技术采用多级流水线技术采用多级流水线技术采用多级流水线技术对于对于对于对于ARMARMARMARM指令,指令,指令,指令,(PCPCPCPC)=

21、 = = = 当前指令地址当前指令地址当前指令地址当前指令地址 + + + + 8 8 8 8 指向下两条指令的地址指向下两条指令的地址指向下两条指令的地址指向下两条指令的地址第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集用户模式用户模式用户模式用户模式系统模式系统模式系统模式系统模式管理模式管理模式管理模式管理模式中止模式中止模式中止模式中止模式未定义模式未定义模式未定义模式未定义模式中断模式中断模式中断模式中断模式快中断模式快中断模式快中断模式快中断模式 R0R0 R1R1 R2R2 R3R3 R4R4 R5R5 R6R6 R7R7 R8R8R8_fiqR8_f

22、iq R9R9R9_fiqR9_fiq R10R10R10_fiqR10_fiq R11R11R11_fiqR11_fiq R12R12R12_fiqR12_fiq R13R13R13_svcR13_svcR13_abtR13_abtR13_undR13_undR13_irqR13_irqR13_fiqR13_fiq R14R14R14_svcR14_svcR14_abtR14_abtR14_undR14_undR14_irqR14_irqR14_fiqR14_fiq R15R15 CPSRCPSR - -SPSR_svcSPSR_svcSPSR_abtSPSR_abtSPSR_undSPSR

23、_undSPSR_irqSPSR_irqSPSR_fiqSPSR_fiq第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集用户模式用户模式用户模式用户模式系统模式系统模式系统模式系统模式管理模式管理模式管理模式管理模式中止模式中止模式中止模式中止模式未定义模式未定义模式未定义模式未定义模式中断模式中断模式中断模式中断模式快中断模式快中断模式快中断模式快中断模式 R0 R0 R1 R1 R2 R2 R3 R3 R4 R4 R5 R5 R6 R6 R7 R7 R8 R8R8_fiqR8_fiq R9 R9R9_fiqR9_fiq R10 R10R10_fiqR10_fiq

24、R11 R11R11_fiqR11_fiq R12 R12R12_fiqR12_fiq R13 R13R13_svcR13_svcR13_abtR13_abtR13_undR13_undR13_irqR13_irqR13_fiqR13_fiq R14 R14R14_svcR14_svcR14_abtR14_abtR14_undR14_undR14_irqR14_irqR14_fiqR14_fiq R15 R15 CPSR CPSR - -SPSR_svcSPSR_svcSPSR_abtSPSR_abtSPSR_undSPSR_undSPSR_irqSPSR_irqSPSR_fiqSPSR_fi

25、q第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集用户模式用户模式用户模式用户模式系统模式系统模式系统模式系统模式管理模式管理模式管理模式管理模式中止模式中止模式中止模式中止模式未定义模式未定义模式未定义模式未定义模式中断模式中断模式中断模式中断模式快中断模式快中断模式快中断模式快中断模式 R0 R0 R1 R1 R2 R2 R3 R3 R4 R4 R5 R5 R6 R6 R7 R7 R8 R8R8_fiqR8_fiq R9 R9R9_fiqR9_fiq R10 R10R10_fiqR10_fiq R11 R11R11_fiqR11_fiq R12 R12R12_fi

26、qR12_fiq R13R13R13_svcR13_svcR13_abtR13_abtR13_undR13_undR13_irqR13_irqR13_fiqR13_fiq R14R14R14_svcR14_svcR14_abtR14_abtR14_undR14_undR14_irqR14_irqR14_fiqR14_fiq R15 R15 CPSR CPSR - -SPSR_svcSPSR_svcSPSR_abtSPSR_abtSPSR_undSPSR_undSPSR_irqSPSR_irqSPSR_fiqSPSR_fiq第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令

27、集用户模式用户模式用户模式用户模式系统模式系统模式系统模式系统模式管理模式管理模式管理模式管理模式中止模式中止模式中止模式中止模式未定义模式未定义模式未定义模式未定义模式中断模式中断模式中断模式中断模式快中断模式快中断模式快中断模式快中断模式 R0 R0 R1 R1 R2 R2 R3 R3 R4 R4 R5 R5 R6 R6 R7 R7 R8 R8R8_fiqR8_fiq R9 R9R9_fiqR9_fiq R10 R10R10_fiqR10_fiq R11 R11R11_fiqR11_fiq R12 R12R12_fiqR12_fiq R13R13R13_svcR13_svcR13_abtR

28、13_abtR13_undR13_undR13_irqR13_irqR13_fiqR13_fiq R14R14R14_svcR14_svcR14_abtR14_abtR14_undR14_undR14_irqR14_irqR14_fiqR14_fiq R15 R15 CPSR CPSR - -SPSR_svcSPSR_svcSPSR_abtSPSR_abtSPSR_undSPSR_undSPSR_irqSPSR_irqSPSR_fiqSPSR_fiq第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集用户模式用户模式用户模式用户模式系统模式系统模式系统模式系统模式管理模式

29、管理模式管理模式管理模式中止模式中止模式中止模式中止模式未定义模式未定义模式未定义模式未定义模式中断模式中断模式中断模式中断模式快中断模式快中断模式快中断模式快中断模式 R0 R0 R1 R1 R2 R2 R3 R3 R4 R4 R5 R5 R6 R6 R7 R7 R8 R8R8_fiqR8_fiq R9 R9R9_fiqR9_fiq R10 R10R10_fiqR10_fiq R11 R11R11_fiqR11_fiq R12 R12R12_fiqR12_fiq R13R13R13_svcR13_svcR13_abtR13_abtR13_undR13_undR13_irqR13_irqR13

30、_fiqR13_fiq R14R14R14_svcR14_svcR14_abtR14_abtR14_undR14_undR14_irqR14_irqR14_fiqR14_fiq R15 R15 CPSR CPSR - -SPSR_svcSPSR_svcSPSR_abtSPSR_abtSPSR_undSPSR_undSPSR_irqSPSR_irqSPSR_fiqSPSR_fiq第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集用户模式用户模式用户模式用户模式系统模式系统模式系统模式系统模式管理模式管理模式管理模式管理模式中止模式中止模式中止模式中止模式未定义模式未定义模

31、式未定义模式未定义模式中断模式中断模式中断模式中断模式快中断模式快中断模式快中断模式快中断模式 R0 R0 R1 R1 R2 R2 R3 R3 R4 R4 R5 R5 R6 R6 R7 R7 R8 R8R8_fiqR8_fiq R9 R9R9_fiqR9_fiq R10 R10R10_fiqR10_fiq R11 R11R11_fiqR11_fiq R12 R12R12_fiqR12_fiq R13R13R13_svcR13_svcR13_abtR13_abtR13_undR13_undR13_irqR13_irqR13_fiqR13_fiq R14R14R14_svcR14_svcR14_a

32、btR14_abtR14_undR14_undR14_irqR14_irqR14_fiqR14_fiq R15 R15 CPSR CPSR - -SPSR_svcSPSR_svcSPSR_abtSPSR_abtSPSR_undSPSR_undSPSR_irqSPSR_irqSPSR_fiqSPSR_fiq第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集用户模式用户模式用户模式用户模式系统模式系统模式系统模式系统模式管理模式管理模式管理模式管理模式中止模式中止模式中止模式中止模式未定义模式未定义模式未定义模式未定义模式中断模式中断模式中断模式中断模式快中断模式快中断模式

33、快中断模式快中断模式 R0 R0 R1 R1 R2 R2 R3 R3 R4 R4 R5 R5 R6 R6 R7 R7 R8R8R8_fiqR8_fiq R9R9R9_fiqR9_fiq R10R10R10_fiqR10_fiq R11R11R11_fiqR11_fiq R12R12R12_fiqR12_fiq R13R13R13_svcR13_svcR13_abtR13_abtR13_undR13_undR13_irqR13_irqR13_fiqR13_fiq R14R14R14_svcR14_svcR14_abtR14_abtR14_undR14_undR14_irqR14_irqR14_f

34、iqR14_fiq R15 R15 CPSR CPSR - -SPSR_svcSPSR_svcSPSR_abtSPSR_abtSPSR_undSPSR_undSPSR_irqSPSR_irqSPSR_fiqSPSR_fiq第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 32 2 2 2 ARMARMARMARM微处理器体系结构微处理器体系结构微处理器体系结构微处理器体系结构3.2.3 3.2.3 3.2.3 3.2.3 ARMARMARMARM的寄存器组织的寄存器组织的寄存器组织的寄存器组织 2.2.2.2.程序状态寄存器程序状态寄存器程序状态寄存器程序状

35、态寄存器包括:包括:包括:包括:状态寄存器状态寄存器状态寄存器状态寄存器CPSRCPSRCPSRCPSR:所有模式共同使用所有模式共同使用所有模式共同使用所有模式共同使用备份状态寄存器备份状态寄存器备份状态寄存器备份状态寄存器SPSRSPSRSPSRSPSR:除了除了除了除了系统系统系统系统/ / / /用户用户用户用户模式,其余各个模式,其余各个模式,其余各个模式,其余各个 模式各有一个对应的备份状态寄存器模式各有一个对应的备份状态寄存器模式各有一个对应的备份状态寄存器模式各有一个对应的备份状态寄存器 第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 32

36、 2 2 2 ARMARMARMARM微处理器体系结构微处理器体系结构微处理器体系结构微处理器体系结构3.2.3 3.2.3 3.2.3 3.2.3 ARMARMARMARM的寄存器组织的寄存器组织的寄存器组织的寄存器组织 2.2.2.2.程序状态寄存器程序状态寄存器程序状态寄存器程序状态寄存器CPSRCPSRCPSRCPSR D31 D30 D29 D28 D7 D6 D5 D4 D3 D2 D1 D0 D31 D30 D29 D28 D7 D6 D5 D4 D3 D2 D1 D0 D31 D30 D29 D28 D7 D6 D5 D4 D3 D2 D1 D0 D31 D30 D29 D28

37、 D7 D6 D5 D4 D3 D2 D1 D0N N N N 符号标志符号标志符号标志符号标志 I = 1I = 1I = 1I = 1 中断禁止中断禁止中断禁止中断禁止 Z Z Z Z 零标志零标志零标志零标志 F = 1F = 1F = 1F = 1 快速中断禁止快速中断禁止快速中断禁止快速中断禁止 C C C C 进位标志进位标志进位标志进位标志 T = 1T = 1T = 1T = 1 ThumbThumbThumbThumb指令指令指令指令V V V V 溢出标志溢出标志溢出标志溢出标志N Z C V I F T M4 M3 M2 M1 M0N Z C V I F T M4 M3

38、M2 M1 M0第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 32 2 2 2 ARMARMARMARM微处理器体系结构微处理器体系结构微处理器体系结构微处理器体系结构3.2.3 3.2.3 3.2.3 3.2.3 ARMARMARMARM的寄存器组织的寄存器组织的寄存器组织的寄存器组织 2.2.2.2.程序状态寄存器程序状态寄存器程序状态寄存器程序状态寄存器CPSRCPSRCPSRCPSR D31 D30 D29 D28 D7 D6 D5 D4 D3 D2 D1 D0 D31 D30 D29 D28 D7 D6 D5 D4 D3 D2 D1 D0 D3

39、1 D30 D29 D28 D7 D6 D5 D4 D3 D2 D1 D0 D31 D30 D29 D28 D7 D6 D5 D4 D3 D2 D1 D0M4 M3 M2 M1 M0M4 M3 M2 M1 M0M4 M3 M2 M1 M0M4 M3 M2 M1 M01 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 用户模式用户模式用户模式用户模式 1 0 0 0 1 1 0 0 0 1 1 0 0 0 1 1 0 0 0 1 FIQFIQFIQFIQ模式模式模式模式 1 0 0 1 0 1 0 0 1 0 1 0 0 1 0 1 0 0 1 0 IRQIRQIRQ

40、IRQ模式模式模式模式1 0 0 1 1 1 0 0 1 1 1 0 0 1 1 1 0 0 1 1 管理模式管理模式管理模式管理模式 1 0 1 1 1 1 0 1 1 1 1 0 1 1 1 1 0 1 1 1 中止模式中止模式中止模式中止模式 1 1 0 1 1 1 1 0 1 1 1 1 0 1 1 1 1 0 1 1 未定义模式未定义模式未定义模式未定义模式1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 系统模式系统模式系统模式系统模式N Z C V I F T M4 M3 M2 M1 M0N Z C V I F T M4 M3 M2 M1 M0第三章

41、第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 32 2 2 2 ARMARMARMARM微处理器体系结构微处理器体系结构微处理器体系结构微处理器体系结构3.2.4 3.2.4 3.2.4 3.2.4 ARMARMARMARM处理器模式处理器模式处理器模式处理器模式 (1 1 1 1)用户模式:用户模式:用户模式:用户模式:正常程序运行模式正常程序运行模式正常程序运行模式正常程序运行模式(2 2 2 2)* * * *快中断模式:快中断模式:快中断模式:快中断模式:高速数据传输模式高速数据传输模式高速数据传输模式高速数据传输模式(3 3 3 3)* * * *外

42、中断模式:外中断模式:外中断模式:外中断模式:通用外中断模式通用外中断模式通用外中断模式通用外中断模式(4 4 4 4)* * * *管理模式:管理模式:管理模式:管理模式:操作系统使用的保护模式操作系统使用的保护模式操作系统使用的保护模式操作系统使用的保护模式(5 5 5 5)* * * *异常中止模式:异常中止模式:异常中止模式:异常中止模式:取指令取指令取指令取指令/ / / /数据发生异常时进入该模式数据发生异常时进入该模式数据发生异常时进入该模式数据发生异常时进入该模式(6 6 6 6)系统模式:系统模式:系统模式:系统模式:运行有特权的操作系统任务运行有特权的操作系统任务运行有特权

43、的操作系统任务运行有特权的操作系统任务(7 7 7 7)* * * *未定义指令终止模式:未定义指令执行时进入该模式未定义指令终止模式:未定义指令执行时进入该模式未定义指令终止模式:未定义指令执行时进入该模式未定义指令终止模式:未定义指令执行时进入该模式(2 2 2 2)- - - -(7 7 7 7):):):):为特权模式为特权模式为特权模式为特权模式(2 2 2 2)- - - -(5 5 5 5)、()、()、()、(7 7 7 7):):):):为异常模式为异常模式为异常模式为异常模式第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 32 2 2

44、2 ARMARMARMARM微处理器体系结构微处理器体系结构微处理器体系结构微处理器体系结构3.2.5 3.2.5 3.2.5 3.2.5 异常异常异常异常 1.ARM1.ARM1.ARM1.ARM体系结构所支持的异常类型体系结构所支持的异常类型体系结构所支持的异常类型体系结构所支持的异常类型1111复位:复位:复位:复位:复位引脚产生有效信号复位引脚产生有效信号复位引脚产生有效信号复位引脚产生有效信号2222未定义指令:未定义指令:未定义指令:未定义指令:遇到错误机器指令时遇到错误机器指令时遇到错误机器指令时遇到错误机器指令时3333软件中断:软件中断:软件中断:软件中断:执行执行执行执行S

45、WISWISWISWI指令产生,用于实现系统功能调用指令产生,用于实现系统功能调用指令产生,用于实现系统功能调用指令产生,用于实现系统功能调用4444指令预取中止:指令预取中止:指令预取中止:指令预取中止: 预取指令发生错误预取指令发生错误预取指令发生错误预取指令发生错误5555数据操作中止:数据操作中止:数据操作中止:数据操作中止: 操作数据发生错误操作数据发生错误操作数据发生错误操作数据发生错误6666IRQIRQIRQIRQ外中断请求:外中断请求:外中断请求:外中断请求:IRQIRQIRQIRQ引脚产生引脚产生引脚产生引脚产生7777FIQFIQFIQFIQ快速中断请求:快速中断请求:快

46、速中断请求:快速中断请求:FIQFIQFIQFIQ引脚产生引脚产生引脚产生引脚产生 第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 32 2 2 2 ARMARMARMARM微处理器体系结构微处理器体系结构微处理器体系结构微处理器体系结构3.2.5 3.2.5 3.2.5 3.2.5 异常异常异常异常 1.ARM1.ARM1.ARM1.ARM体系结构所支持的异常类型体系结构所支持的异常类型体系结构所支持的异常类型体系结构所支持的异常类型异常异常异常异常类型类型类型类型对应的对应的对应的对应的异常模式异常模式异常模式异常模式1111复位:复位:复位:复位:管

47、理管理管理管理模式模式模式模式2222未定义指令:未定义指令:未定义指令:未定义指令:未定义未定义未定义未定义模式模式模式模式3333软件中断:软件中断:软件中断:软件中断:管理管理管理管理模式模式模式模式4444指令预取中止:指令预取中止:指令预取中止:指令预取中止:中止中止中止中止模式模式模式模式5555数据操作中止:数据操作中止:数据操作中止:数据操作中止:中止中止中止中止模式模式模式模式6666IRQIRQIRQIRQ外中断请求:外中断请求:外中断请求:外中断请求:中断中断中断中断模式模式模式模式7777FIQFIQFIQFIQ快速中断请求:快速中断请求:快速中断请求:快速中断请求:快

48、中断快中断快中断快中断模式模式模式模式第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 32 2 2 2 ARMARMARMARM微处理器体系结构微处理器体系结构微处理器体系结构微处理器体系结构3.2.5 3.2.5 3.2.5 3.2.5 异常异常异常异常 2.2.2.2.对异常的响应对异常的响应对异常的响应对异常的响应1111下一条指令地址保存到相应连接寄存器下一条指令地址保存到相应连接寄存器下一条指令地址保存到相应连接寄存器下一条指令地址保存到相应连接寄存器LRLRLRLR(R14R14R14R14)ARMARMARMARM状态:状态:状态:状态:保存

49、保存保存保存PC+PC+PC+PC+8 8 8 8/PC+/PC+/PC+/PC+4 4 4 4(根据异常类型)(根据异常类型)(根据异常类型)(根据异常类型)以三级流水线为例:以三级流水线为例:以三级流水线为例:以三级流水线为例:20000002000000200000020000000 0 0 0H H H H第一条指令第一条指令第一条指令第一条指令(正在(正在(正在(正在执行执行执行执行)20000002000000200000020000004 4 4 4H H H H第二条指令第二条指令第二条指令第二条指令(正在(正在(正在(正在译码译码译码译码)200000020000002000

50、00020000008 8 8 8H H H H第三条指令第三条指令第三条指令第三条指令(正在(正在(正在(正在取指取指取指取指)ThimbThimbThimbThimb状态:状态:状态:状态:保存当前保存当前保存当前保存当前PCPCPCPC的偏移量的偏移量的偏移量的偏移量 第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 32 2 2 2 ARMARMARMARM微处理器体系结构微处理器体系结构微处理器体系结构微处理器体系结构3.2.5 3.2.5 3.2.5 3.2.5 异常异常异常异常 2.2.2.2.对异常的响应对异常的响应对异常的响应对异常的响应2

51、222将将将将CPSRCPSRCPSRCPSR内容复制到内容复制到内容复制到内容复制到SPSRSPSRSPSRSPSR之中。之中。之中。之中。3333根据异常类型,强行设置根据异常类型,强行设置根据异常类型,强行设置根据异常类型,强行设置CPSRCPSRCPSRCPSR之中的运行模式位之中的运行模式位之中的运行模式位之中的运行模式位(M4-M0M4-M0M4-M0M4-M0)4444强制强制强制强制PCPCPCPC从相关异常向量地址取指令执行。从相关异常向量地址取指令执行。从相关异常向量地址取指令执行。从相关异常向量地址取指令执行。 如果异常发生时处于如果异常发生时处于如果异常发生时处于如果异

52、常发生时处于T T T Thumbhumbhumbhumb状态状态状态状态则强行切换到则强行切换到则强行切换到则强行切换到ARMARMARMARM状态状态状态状态 第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 32 2 2 2 ARMARMARMARM微处理器体系结构微处理器体系结构微处理器体系结构微处理器体系结构3.2.5 3.2.5 3.2.5 3.2.5 异常异常异常异常 2.2.2.2.对异常的响应(用代码描述)对异常的响应(用代码描述)对异常的响应(用代码描述)对异常的响应(用代码描述)1111 R14_ R14_ R14_ R14_ = =

53、= = Return LinkReturn LinkReturn LinkReturn Link;保存返回地址保存返回地址保存返回地址保存返回地址 2222 SPSR_ SPSR_ SPSR_ SPSR_ = CPSR = CPSR = CPSR = CPSR;保存保存保存保存CPSRCPSRCPSRCPSR状态状态状态状态3333 CPSP CPSP CPSP CPSP4:0=4:0=4:0=4:0= Exception_Mode NumberException_Mode NumberException_Mode NumberException_Mode Number CPSR CPSR C

54、PSR CPSR5555 = = = = 0 0 0 0; 强行切换到强行切换到强行切换到强行切换到ARMARMARMARM状态状态状态状态If If If If = = = = = Reset or FIQ then= Reset or FIQ then= Reset or FIQ then= Reset or FIQ then CPSRCPSRCPSRCPSR6666 = = = = 1 1 1 1;关闭关闭关闭关闭快中断快中断快中断快中断CPSRCPSRCPSRCPSR7777 = = = = 1 1 1 1;关闭关闭关闭关闭中断中断中断中断4444 PC = PC = PC = PC

55、= Exception Vector AddressException Vector AddressException Vector AddressException Vector Address 第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 32 2 2 2 ARMARMARMARM微处理器体系结构微处理器体系结构微处理器体系结构微处理器体系结构3.2.5 3.2.5 3.2.5 3.2.5 异常异常异常异常 3.3.3.3.从异常返回从异常返回从异常返回从异常返回1LR1LR1LR1LR(R14R14R14R14)内容减去内容减去内容减去内容减去相应

56、偏移量相应偏移量相应偏移量相应偏移量后送后送后送后送PCPCPCPC相应偏移量相应偏移量相应偏移量相应偏移量:0/4/80/4/80/4/80/4/8;根据异常类型的不同而定根据异常类型的不同而定根据异常类型的不同而定根据异常类型的不同而定2222还原还原还原还原CPSRCPSRCPSRCPSR:(CPSRCPSRCPSRCPSR)(SPSR_modSPSR_modSPSR_modSPSR_mod)3333开放中断、快中断屏蔽开放中断、快中断屏蔽开放中断、快中断屏蔽开放中断、快中断屏蔽 第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 32 2 2 2 AR

57、MARMARMARM微处理器体系结构微处理器体系结构微处理器体系结构微处理器体系结构3.2.5 3.2.5 3.2.5 3.2.5 异常异常异常异常 4.4.4.4.对各异常的具体描述对各异常的具体描述对各异常的具体描述对各异常的具体描述1111FIQFIQFIQFIQ(快速中断)异常(快速中断)异常(快速中断)异常(快速中断)异常 功能:支持数据传输功能:支持数据传输功能:支持数据传输功能:支持数据传输/ / / /通道处理。不必切换通道处理。不必切换通道处理。不必切换通道处理。不必切换R8-R12R8-R12R8-R12R8-R12管理:管理:管理:管理:CPSRCPSRCPSRCPSR中

58、中中中F = 1F = 1F = 1F = 1 禁止禁止禁止禁止FIQFIQFIQFIQ中断中断中断中断 CPSRCPSRCPSRCPSR中中中中F = 0F = 0F = 0F = 0 开放开放开放开放FIQFIQFIQFIQ中断中断中断中断产生:产生:产生:产生:ARMARMARMARM的的的的nFIQnFIQnFIQnFIQ引脚输入引脚输入引脚输入引脚输入“0”“0”“0”“0”信号引发信号引发信号引发信号引发FIQFIQFIQFIQ中断中断中断中断返回:返回:返回:返回:(1 1 1 1)R14_fiqR14_fiqR14_fiqR14_fiq内容减去内容减去内容减去内容减去4 4 4

59、 4以后送回以后送回以后送回以后送回PCPCPCPC SUBS PCSUBS PCSUBS PCSUBS PC,R14_fiqR14_fiqR14_fiqR14_fiq,#4#4#4#4;(PCPCPCPC) (R14_fiqR14_fiqR14_fiqR14_fiq)- - - - 4 4 4 4 (2 2 2 2)()()()(CPSRCPSRCPSRCPSR)(SPSR_fiqSPSR_fiqSPSR_fiqSPSR_fiq)第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 32 2 2 2 ARMARMARMARM微处理器体系结构微处理器体系结构微处

60、理器体系结构微处理器体系结构3.2.5 3.2.5 3.2.5 3.2.5 异常异常异常异常 4.4.4.4.对各异常的具体描述对各异常的具体描述对各异常的具体描述对各异常的具体描述2222IRQIRQIRQIRQ(中断)异常(中断)异常(中断)异常(中断)异常 功能:正常中断处理功能:正常中断处理功能:正常中断处理功能:正常中断处理管理:管理:管理:管理:CPSRCPSRCPSRCPSR中中中中I = 1I = 1I = 1I = 1 禁止禁止禁止禁止IRQIRQIRQIRQ中断中断中断中断 CPSRCPSRCPSRCPSR中中中中I = 0I = 0I = 0I = 0 开放开放开放开放I

61、RQIRQIRQIRQ中断中断中断中断产生:产生:产生:产生:ARMARMARMARM的的的的nIRQnIRQnIRQnIRQ引脚输入引脚输入引脚输入引脚输入“0”“0”“0”“0”信号引发信号引发信号引发信号引发FIQFIQFIQFIQ中断中断中断中断 但是但是但是但是IRQIRQIRQIRQ优先级低于优先级低于优先级低于优先级低于FIQFIQFIQFIQ,如果,如果,如果,如果FIQFIQFIQFIQ被响应,被响应,被响应,被响应,IRQIRQIRQIRQ被屏蔽被屏蔽被屏蔽被屏蔽返回:(返回:(返回:(返回:(1 1 1 1)R14_irqR14_irqR14_irqR14_irq内容减去

62、内容减去内容减去内容减去4 4 4 4以后送回以后送回以后送回以后送回PC PC PC PC SUBS PCSUBS PCSUBS PCSUBS PC,R14_irqR14_irqR14_irqR14_irq,#4#4#4#4; (PCPCPCPC) (R14_irqR14_irqR14_irqR14_irq)- - - - 4 4 4 4 (2 2 2 2)()()()(CPSRCPSRCPSRCPSR)(SPSR_irqSPSR_irqSPSR_irqSPSR_irq)第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 32 2 2 2 ARMARMARM

63、ARM微处理器体系结构微处理器体系结构微处理器体系结构微处理器体系结构3.2.5 3.2.5 3.2.5 3.2.5 异常异常异常异常 4.4.4.4.对各异常的具体描述对各异常的具体描述对各异常的具体描述对各异常的具体描述3333中止异常中止异常中止异常中止异常包括:包括:包括:包括:指令预取指令预取指令预取指令预取中止中止中止中止 数据数据数据数据中止中止中止中止 功能:用于处理功能:用于处理功能:用于处理功能:用于处理取指令取指令取指令取指令失败失败失败失败/ / / /数据访问数据访问数据访问数据访问失败失败失败失败返回:返回:返回:返回: 指令预取指令预取指令预取指令预取中止:中止:

64、中止:中止:SUBS PCSUBS PCSUBS PCSUBS PC,R14_abtR14_abtR14_abtR14_abt,#4#4#4#4 数据数据数据数据中止:中止:中止:中止:SUBS PCSUBS PCSUBS PCSUBS PC,R14_abtR14_abtR14_abtR14_abt,#8#8#8#8第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 32 2 2 2 ARMARMARMARM微处理器体系结构微处理器体系结构微处理器体系结构微处理器体系结构3.2.5 3.2.5 3.2.5 3.2.5 异常异常异常异常 4.4.4.4.对各异常

65、的具体描述对各异常的具体描述对各异常的具体描述对各异常的具体描述4444软件中断异常软件中断异常软件中断异常软件中断异常功能:通过功能:通过功能:通过功能:通过SWISWISWISWI指令进入管理模式,用于执行特点管理功能指令进入管理模式,用于执行特点管理功能指令进入管理模式,用于执行特点管理功能指令进入管理模式,用于执行特点管理功能返回:返回:返回:返回:MOV PCMOV PCMOV PCMOV PC,R14_svcR14_svcR14_svcR14_svc第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 32 2 2 2 ARMARMARMARM微处理

66、器体系结构微处理器体系结构微处理器体系结构微处理器体系结构3.2.5 3.2.5 3.2.5 3.2.5 异常异常异常异常 4.4.4.4.对各异常的具体描述对各异常的具体描述对各异常的具体描述对各异常的具体描述5555未定义指令异常未定义指令异常未定义指令异常未定义指令异常 功能:用于处理未定义指令(可以实现指令扩展功能)功能:用于处理未定义指令(可以实现指令扩展功能)功能:用于处理未定义指令(可以实现指令扩展功能)功能:用于处理未定义指令(可以实现指令扩展功能)返回:返回:返回:返回:MOV PCMOV PCMOV PCMOV PC,R14_undR14_undR14_undR14_und

67、第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 32 2 2 2 ARMARMARMARM微处理器体系结构微处理器体系结构微处理器体系结构微处理器体系结构3.2.5 3.2.5 3.2.5 3.2.5 异常异常异常异常 5.5.5.5.异常进入异常进入异常进入异常进入/ / / /退出小结退出小结退出小结退出小结异常异常异常异常对应的返回指令对应的返回指令对应的返回指令对应的返回指令ARM R14_xARM R14_xARM R14_xARM R14_xThumb R14_xThumb R14_xThumb R14_xThumb R14_x说明说明说明说明

68、BLBLBLBLMOV PCMOV PCMOV PCMOV PC,R14R14R14R14PC+4PC+4PC+4PC+4PC+2PC+2PC+2PC+21 1 1 1SWISWISWISWIMOVS PCMOVS PCMOVS PCMOVS PC,R14_svcR14_svcR14_svcR14_svcPC+4PC+4PC+4PC+4PC+2PC+2PC+2PC+21 1 1 1UDEFUDEFUDEFUDEFMOVS PCMOVS PCMOVS PCMOVS PC,R14_undR14_undR14_undR14_undPC+4PC+4PC+4PC+4PC+2PC+2PC+2PC+21 1

69、 1 1FIQFIQFIQFIQSUBS PCSUBS PCSUBS PCSUBS PC,R14_fiqR14_fiqR14_fiqR14_fiq,#4#4#4#4PC+4PC+4PC+4PC+4PC+4PC+4PC+4PC+42 2 2 2IRQIRQIRQIRQSUBS PCSUBS PCSUBS PCSUBS PC,R14_irqR14_irqR14_irqR14_irq,#4#4#4#4PC+4PC+4PC+4PC+4PC+4PC+4PC+4PC+42 2 2 2PABTPABTPABTPABTSUBS PCSUBS PCSUBS PCSUBS PC,R14_abtR14_abtR14

70、_abtR14_abt,#4#4#4#4PC+4PC+4PC+4PC+4PC+4PC+4PC+4PC+41 1 1 1DABTDABTDABTDABTSUBS PCSUBS PCSUBS PCSUBS PC,R14_abtR14_abtR14_abtR14_abt,#8#8#8#8PC+8PC+8PC+8PC+8PC+8PC+8PC+8PC+83 3 3 3RESETRESETRESETRESET NANANANA4 4 4 4第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 32 2 2 2 ARMARMARMARM微处理器体系结构微处理器体系结构微处理器

71、体系结构微处理器体系结构3.2.5 3.2.5 3.2.5 3.2.5 异常异常异常异常 5.5.5.5.异常进入异常进入异常进入异常进入/ / / /退出小结退出小结退出小结退出小结说明:说明:说明:说明:1 PC1 PC1 PC1 PC为为为为预取中止的指令预取中止的指令预取中止的指令预取中止的指令对应地址对应地址对应地址对应地址2 PC2 PC2 PC2 PC为为为为取得的不能执行的指令取得的不能执行的指令取得的不能执行的指令取得的不能执行的指令对应地址对应地址对应地址对应地址3 PC3 PC3 PC3 PC为为为为产生数据中止产生数据中止产生数据中止产生数据中止的地址(数据地址)的地址

72、(数据地址)的地址(数据地址)的地址(数据地址)4 PC4 PC4 PC4 PC为为为为不确定不确定不确定不确定地址,因为地址,因为地址,因为地址,因为R14_svcR14_svcR14_svcR14_svc内容不确定内容不确定内容不确定内容不确定第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 32 2 2 2 ARMARMARMARM微处理器体系结构微处理器体系结构微处理器体系结构微处理器体系结构3.2.5 3.2.5 3.2.5 3.2.5 异常异常异常异常 6.6.6.6.异常向量异常向量异常向量异常向量 地地地地 址址址址 异异异异 常常常常 进入

73、模式进入模式进入模式进入模式0x000000000x000000000x000000000x00000000复位复位复位复位管理模式管理模式管理模式管理模式0x000000040x000000040x000000040x00000004未定义指令未定义指令未定义指令未定义指令未定义模式未定义模式未定义模式未定义模式0x000000080x000000080x000000080x00000008软件中断软件中断软件中断软件中断管理模式管理模式管理模式管理模式0x0000000C0x0000000C0x0000000C0x0000000C中止(预取指令)中止(预取指令)中止(预取指令)中止(预取指

74、令)中止模式中止模式中止模式中止模式0x000000100x000000100x000000100x00000010中止(数据)中止(数据)中止(数据)中止(数据)中止模式中止模式中止模式中止模式0x000000140x000000140x000000140x00000014保留保留保留保留保留保留保留保留0x000000180x000000180x000000180x00000018IRQIRQIRQIRQIRQIRQIRQIRQ模式模式模式模式0x0000001C0x0000001C0x0000001C0x0000001CFIQFIQFIQFIQFIQFIQFIQFIQ模式模式模式模式第三

75、章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 32 2 2 2 ARMARMARMARM微处理器体系结构微处理器体系结构微处理器体系结构微处理器体系结构3.2.5 3.2.5 3.2.5 3.2.5 异常异常异常异常 6.6.6.6.异常向量(优先级)异常向量(优先级)异常向量(优先级)异常向量(优先级) 优优优优 先先先先 级级级级 异异异异 常常常常 1 1 1 1(最高)(最高)(最高)(最高) 复位复位复位复位 2 2 2 2 数据中止数据中止数据中止数据中止 3 3 3 3 FIQ FIQ FIQ FIQ 4 4 4 4 IRQ IRQ IRQ I

76、RQ 5 5 5 5 预取指令中止预取指令中止预取指令中止预取指令中止 6 6 6 6(最低)(最低)(最低)(最低) 未定义指令、未定义指令、未定义指令、未定义指令、SWISWISWISWI指令指令指令指令第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 33 3 3 3 ARMARMARMARM微处理器的指令系统微处理器的指令系统微处理器的指令系统微处理器的指令系统3.3.1 3.3.1 3.3.1 3.3.1 ARMARMARMARM指令系统概述指令系统概述指令系统概述指令系统概述 说明:说明:说明:说明:ARMARMARMARM微处理器是基于微处理器

77、是基于微处理器是基于微处理器是基于RISCRISCRISCRISC原理设计的原理设计的原理设计的原理设计的所有的所有的所有的所有的ARMARMARMARM指令都是指令都是指令都是指令都是32323232位操作数,位操作数,位操作数,位操作数,ARMARMARMARM指令以指令以指令以指令以字字字字为边界为边界为边界为边界所有的所有的所有的所有的ThumbThumbThumbThumb指令都是指令都是指令都是指令都是16161616位指令,位指令,位指令,位指令,ThumbThumbThumbThumb指令以指令以指令以指令以半字半字半字半字为边界为边界为边界为边界第三章第三章 ARMARM微处

78、理器体系结构与指令集微处理器体系结构与指令集3 3 3 33 3 3 3 ARMARMARMARM微处理器的指令系统微处理器的指令系统微处理器的指令系统微处理器的指令系统3.3.1 3.3.1 3.3.1 3.3.1 ARMARMARMARM指令系统概述指令系统概述指令系统概述指令系统概述 ARMARMARMARM指令集分为指令集分为指令集分为指令集分为6 6 6 6类类类类1111跳转类指令跳转类指令跳转类指令跳转类指令2222数据处理类指令数据处理类指令数据处理类指令数据处理类指令3333程序状态寄存器处理指令程序状态寄存器处理指令程序状态寄存器处理指令程序状态寄存器处理指令4444加载加

79、载加载加载/ / / /存储指令存储指令存储指令存储指令5555协处理器指令协处理器指令协处理器指令协处理器指令6666异常产生指令异常产生指令异常产生指令异常产生指令第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 33 3 3 3 ARMARMARMARM微处理器的指令系统微处理器的指令系统微处理器的指令系统微处理器的指令系统3.3.2 3.3.2 3.3.2 3.3.2 ARMARMARMARM指令的条件域指令的条件域指令的条件域指令的条件域 ARMARMARMARM指令的一般格式指令的一般格式指令的一般格式指令的一般格式 S S S S , , ,

80、, , OpCode: OpCode: OpCode: OpCode:指令助记符指令助记符指令助记符指令助记符( ( ( (操作码操作码操作码操作码) ) ) ) Cond:Cond:Cond:Cond:条件域条件域条件域条件域. . . .如如如如: : : :NE,EQNE,EQNE,EQNE,EQ.(.(.(.(确定本条指令是否执行的条件确定本条指令是否执行的条件确定本条指令是否执行的条件确定本条指令是否执行的条件) ) ) ) S S S S: : : :本条指令执行后是否影响标志寄存器内容本条指令执行后是否影响标志寄存器内容本条指令执行后是否影响标志寄存器内容本条指令执行后是否影响标

81、志寄存器内容. . . . Rd: Rd: Rd: Rd:目标寄存器目标寄存器目标寄存器目标寄存器 Rn: Rn: Rn: Rn:第一个操作数寄存器第一个操作数寄存器第一个操作数寄存器第一个操作数寄存器 Operand2Operand2Operand2Operand2: : : :第二个操作数第二个操作数第二个操作数第二个操作数 其中其中其中其中: : : :OpCodeOpCodeOpCodeOpCode是必需的。是必需的。是必需的。是必需的。 之间的内容是可以选择的之间的内容是可以选择的之间的内容是可以选择的之间的内容是可以选择的第三章第三章 ARMARM微处理器体系结构与指令集微处理器体

82、系结构与指令集3 3 3 33 3 3 3 ARMARMARMARM微处理器的指令系统微处理器的指令系统微处理器的指令系统微处理器的指令系统3.3.2 3.3.2 3.3.2 3.3.2 ARMARMARMARM指令的条件域指令的条件域指令的条件域指令的条件域 ARMARMARMARM指令的举例:指令的举例:指令的举例:指令的举例: SUB SUB SUB SUBNENENENES S S S R1R1R1R1,R0R0R0R0,#0x10#0x10#0x10#0x10 SUBSUBSUBSUB: : : :减法指令减法指令减法指令减法指令. . . . NENENENE: : : :条件条件

83、条件条件( ( ( (不相等不相等不相等不相等) ) ) ) S S S S: : : :本条指令操作后影响标志位本条指令操作后影响标志位本条指令操作后影响标志位本条指令操作后影响标志位 R1R1R1R1: : : :目标寄存器目标寄存器目标寄存器目标寄存器 R0R0R0R0: : : :第一操作数第一操作数第一操作数第一操作数 0x100x100x100x10: : : : 第二操作数第二操作数第二操作数第二操作数 本条指令执行含义本条指令执行含义本条指令执行含义本条指令执行含义: : : : 在前一条指令执行后在前一条指令执行后在前一条指令执行后在前一条指令执行后NENENENE( ( (

84、 (不相等不相等不相等不相等) ) ) )条件下条件下条件下条件下 执行执行执行执行: : : :(R0)(R0)(R0)(R0) - - - - 0x100x100x100x10 (R1)(R1)(R1)(R1) 操作,执行操作后影响标志。操作,执行操作后影响标志。操作,执行操作后影响标志。操作,执行操作后影响标志。第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 33 3 3 3 ARMARMARMARM微处理器的指令系统微处理器的指令系统微处理器的指令系统微处理器的指令系统3.3.2 3.3.2 3.3.2 3.3.2 ARMARMARMARM指令的条

85、件域指令的条件域指令的条件域指令的条件域(S S S S) 用于用于用于用于ARMARMARMARM的条件指令码的条件指令码的条件指令码的条件指令码 后缀后缀后缀后缀 含义含义含义含义 后缀后缀后缀后缀 含义含义含义含义 EQ EQ EQ EQ 相等相等相等相等 HI HI HI HI 大于(无符号)大于(无符号)大于(无符号)大于(无符号) NE NE NE NE 不相等不相等不相等不相等 LS LS LS LS 小于等于(无符号)小于等于(无符号)小于等于(无符号)小于等于(无符号) CS CS CS CS 大于等于(无符号)大于等于(无符号)大于等于(无符号)大于等于(无符号) GE G

86、E GE GE 大于等于(带符号)大于等于(带符号)大于等于(带符号)大于等于(带符号) CC CC CC CC 小于(无符号)小于(无符号)小于(无符号)小于(无符号) LT LT LT LT 小于(带符号)小于(带符号)小于(带符号)小于(带符号) MI MI MI MI 负数负数负数负数 GT GT GT GT 大于(带符号)大于(带符号)大于(带符号)大于(带符号) PL PL PL PL 正数(包括零)正数(包括零)正数(包括零)正数(包括零) LE LE LE LE 小于等于(带符号)小于等于(带符号)小于等于(带符号)小于等于(带符号) VS VS VS VS 溢出溢出溢出溢出

87、ALALALAL 总是总是总是总是 VC VC VC VC 未溢出未溢出未溢出未溢出 无条件无条件无条件无条件第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 33 3 3 3 ARMARMARMARM微处理器的指令系统微处理器的指令系统微处理器的指令系统微处理器的指令系统3.3.3 3.3.3 3.3.3 3.3.3 ARMARMARMARM指令的寻址方式指令的寻址方式指令的寻址方式指令的寻址方式1.1.1.1.寄存器寻址:寄存器寻址:寄存器寻址:寄存器寻址:特点:特点:特点:特点:寄存器的数值为操作数寄存器的数值为操作数寄存器的数值为操作数寄存器的数值为

88、操作数例:例:例:例:ADDADDADDADDR0R0R0R0,R1R1R1R1,R2R2R2R22.2.2.2.立即寻址:立即寻址:立即寻址:立即寻址:特点:特点:特点:特点:操作数本身在指令中(指令的一部分)操作数本身在指令中(指令的一部分)操作数本身在指令中(指令的一部分)操作数本身在指令中(指令的一部分)例:例:例:例:ADDADDADDADDR3R3R3R3,R3R3R3R3,#2#2#2#23.3.3.3.寄存器间接寻址寄存器间接寻址寄存器间接寻址寄存器间接寻址特点:特点:特点:特点:寄存器的数值为操作数地址寄存器的数值为操作数地址寄存器的数值为操作数地址寄存器的数值为操作数地址例

89、:例:例:例:LDRLDRLDRLDRR0R0R0R0,R3R3R3R3第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 33 3 3 3 ARMARMARMARM微处理器的指令系统微处理器的指令系统微处理器的指令系统微处理器的指令系统3.3.3 3.3.3 3.3.3 3.3.3 ARMARMARMARM指令的寻址方式指令的寻址方式指令的寻址方式指令的寻址方式4.4.4.4.寄存器变址寻址寄存器变址寻址寄存器变址寻址寄存器变址寻址特点:特点:特点:特点:寄存器中的数值寄存器中的数值寄存器中的数值寄存器中的数值与与与与指令中偏移量指令中偏移量指令中偏移量指令

90、中偏移量相加为相加为相加为相加为操作数地址操作数地址操作数地址操作数地址例:例:例:例:LDR R0LDR R0LDR R0LDR R0,R1R1R1R1,#4#4#4#4第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 33 3 3 3 ARMARMARMARM微处理器的指令系统微处理器的指令系统微处理器的指令系统微处理器的指令系统3.3.3 3.3.3 3.3.3 3.3.3 ARMARMARMARM指令的寻址方式指令的寻址方式指令的寻址方式指令的寻址方式5.5.5.5.多寄存器寻址多寄存器寻址多寄存器寻址多寄存器寻址特点:特点:特点:特点:一条指令可以

91、完成多个寄存器值的传送一条指令可以完成多个寄存器值的传送一条指令可以完成多个寄存器值的传送一条指令可以完成多个寄存器值的传送 例:例:例:例:LDMLDMLDMLDMIAIAIAIA R0 R0 R0 R0,R1R1R1R1,R2R2R2R2,R3R3R3R3,R4R4R4R4(R1R1R1R1)R0R0R0R0(R2R2R2R2)R0+4R0+4R0+4R0+4(R3R3R3R3)R0+8R0+8R0+8R0+8(R4R4R4R4)R0+12R0+12R0+12R0+12第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 33 3 3 3 ARMARMARM

92、ARM微处理器的指令系统微处理器的指令系统微处理器的指令系统微处理器的指令系统3.3.3 3.3.3 3.3.3 3.3.3 ARMARMARMARM指令的寻址方式指令的寻址方式指令的寻址方式指令的寻址方式5.5.5.5.多寄存器寻址多寄存器寻址多寄存器寻址多寄存器寻址多寄存器寻址的地址指针变化有以下四种:多寄存器寻址的地址指针变化有以下四种:多寄存器寻址的地址指针变化有以下四种:多寄存器寻址的地址指针变化有以下四种: IAIAIAIA I I I Increment ncrement ncrement ncrement A A A Afterfterfterfter;操作后地址增加;操作后地

93、址增加;操作后地址增加;操作后地址增加 IBIBIBIB I I I Increment ncrement ncrement ncrement B B B Beforeeforeeforeefore;操作前地址增加;操作前地址增加;操作前地址增加;操作前地址增加DADADADA D D D Decrement ecrement ecrement ecrement A A A Afterfterfterfter;操作后地址减少;操作后地址减少;操作后地址减少;操作后地址减少DBDBDBDB D D D Decrement ecrement ecrement ecrement B B B Befo

94、reeforeeforeefore;操作前地址减少;操作前地址减少;操作前地址减少;操作前地址减少第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 33 3 3 3 ARMARMARMARM微处理器的指令系统微处理器的指令系统微处理器的指令系统微处理器的指令系统3.3.3 3.3.3 3.3.3 3.3.3 ARMARMARMARM指令的寻址方式指令的寻址方式指令的寻址方式指令的寻址方式6.6.6.6.相对寻址:相对寻址:相对寻址:相对寻址:特点:特点:特点:特点:以当前程序计数器内容为基地址,指令中的标号为偏移量以当前程序计数器内容为基地址,指令中的标号为

95、偏移量以当前程序计数器内容为基地址,指令中的标号为偏移量以当前程序计数器内容为基地址,指令中的标号为偏移量 操作数地址操作数地址操作数地址操作数地址 = = = = 基地址基地址基地址基地址 + + + + 偏移量偏移量偏移量偏移量例:例:例:例:B B B B relrelrelrelB B B B 转移指令操作码转移指令操作码转移指令操作码转移指令操作码relrelrelrel偏移量偏移量偏移量偏移量第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 33 3 3 3 ARMARMARMARM微处理器的指令系统微处理器的指令系统微处理器的指令系统微处理器的

96、指令系统3.3.3 3.3.3 3.3.3 3.3.3 ARMARMARMARM指令的寻址方式指令的寻址方式指令的寻址方式指令的寻址方式7.7.7.7.堆栈寻址:堆栈寻址:堆栈寻址:堆栈寻址:特点:特点:特点:特点:以当前堆栈指针内容为操作数地址以当前堆栈指针内容为操作数地址以当前堆栈指针内容为操作数地址以当前堆栈指针内容为操作数地址堆栈分类:堆栈分类:堆栈分类:堆栈分类:满堆栈满堆栈满堆栈满堆栈:堆栈指针指向:堆栈指针指向:堆栈指针指向:堆栈指针指向最后压入堆栈最后压入堆栈最后压入堆栈最后压入堆栈的数据的数据的数据的数据单元地址单元地址单元地址单元地址空堆栈空堆栈空堆栈空堆栈:堆栈指针指向:

97、堆栈指针指向:堆栈指针指向:堆栈指针指向堆栈中将放入堆栈中将放入堆栈中将放入堆栈中将放入数据的数据的数据的数据的单元地址单元地址单元地址单元地址堆栈指针变化分类:堆栈指针变化分类:堆栈指针变化分类:堆栈指针变化分类:递增:递增:递增:递增:堆栈由堆栈由堆栈由堆栈由低地址低地址低地址低地址向向向向高地址高地址高地址高地址生成生成生成生成递减:递减:递减:递减:堆栈由堆栈由堆栈由堆栈由高地址高地址高地址高地址向向向向低地址低地址低地址低地址生成生成生成生成 第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 33 3 3 3 ARMARMARMARM微处理器的指令

98、系统微处理器的指令系统微处理器的指令系统微处理器的指令系统3.3.3 3.3.3 3.3.3 3.3.3 ARMARMARMARM指令的寻址方式指令的寻址方式指令的寻址方式指令的寻址方式7.7.7.7.堆栈寻址:堆栈寻址:堆栈寻址:堆栈寻址:举例:举例:举例:举例:LDMLDMLDMLDM指令:指令:指令:指令: LDMLDMLDMLDM SP SP SP SP!,!,!,!,R1-R7R1-R7R1-R7R1-R7;(SPSPSPSP) R1 R7 R1 R7 R1 R7 R1 R7STMSTMSTMSTM指令:指令:指令:指令: STMSTMSTMSTM SP SP SP SP!,!,!,

99、!,R1-R7R1-R7R1-R7R1-R7;(SPSPSPSP) R1 R7 R1 R7 R1 R7 R1 R7CondCondCondCond: 堆栈指针变化情况堆栈指针变化情况堆栈指针变化情况堆栈指针变化情况 FDFDFDFD F F F Full ull ull ull D D D Decrementecrementecrementecrement;满满满满递减递减递减递减 EDEDEDED E E E Emptymptymptympty D D D Decrementecrementecrementecrement;空空空空递减递减递减递减 FAFAFAFA F F F Full u

100、ll ull ull A A A Aggarandizement ggarandizement ggarandizement ggarandizement ;满满满满递增递增递增递增 EAEAEAEA E E E Empty mpty mpty mpty A A A Aggarandizementggarandizementggarandizementggarandizement;空空空空递增递增递增递增第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 33 3 3 3 ARMARMARMARM微处理器的指令系统微处理器的指令系统微处理器的指令系统微处理器的

101、指令系统3.3.3 3.3.3 3.3.3 3.3.3 ARMARMARMARM指令的寻址方式指令的寻址方式指令的寻址方式指令的寻址方式7.7.7.7.堆栈寻址:堆栈寻址:堆栈寻址:堆栈寻址:指针变化条件说明指针变化条件说明指针变化条件说明指针变化条件说明 FDFDFDFD F F F Full ull ull ull D D D Decrement ecrement ecrement ecrement EDEDEDED E E E Emptymptymptympty D D D Decrementecrementecrementecrement FAFAFAFA F F F Full ull

102、 ull ull A A A Aggarandizement ggarandizement ggarandizement ggarandizement EAEAEAEA E E E Empty mpty mpty mpty A A A Aggarandizementggarandizementggarandizementggarandizement0000H0000H0000H0000H FFFFHFFFFH FFFFHFFFFHF FD DE ED DF FA AE EA A第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 33 3 3 3 ARMARMA

103、RMARM微处理器的指令系统微处理器的指令系统微处理器的指令系统微处理器的指令系统3.3.4 3.3.4 3.3.4 3.3.4 ARMARMARMARM指令集指令集指令集指令集1.ARM1.ARM1.ARM1.ARM存储器访问指令存储器访问指令存储器访问指令存储器访问指令(寄存器(寄存器(寄存器(寄存器 存储器之间)存储器之间)存储器之间)存储器之间)(1 1 1 1)加载)加载)加载)加载/ / / /存储指令存储指令存储指令存储指令LDRLDRLDRLDRcondcondcondcondT T T T RdRdRdRd, STRSTRSTRSTRcondcondcondcondT T T

104、 T RdRdRdRd, LDRLDRLDRLDR指令:指令:指令:指令: 例如:例如:例如:例如:LDRLDRLDRLDR R0 R0 R0 R0,R1R1R1R1;(;(;(;(R0R0R0R0) R1R1R1R1STRSTRSTRSTR指令:指令:指令:指令: 例如:例如:例如:例如:STRSTRSTRSTR R0 R0 R0 R0,R1R1R1R1;(;(;(;(R0R0R0R0) R1R1R1R1第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 33 3 3 3 ARMARMARMARM微处理器的指令系统微处理器的指令系统微处理器的指令系统微处理器

105、的指令系统3.3.4 3.3.4 3.3.4 3.3.4 ARMARMARMARM指令集指令集指令集指令集1.ARM1.ARM1.ARM1.ARM存储器访问指令存储器访问指令存储器访问指令存储器访问指令(寄存器(寄存器(寄存器(寄存器 存储器之间)存储器之间)存储器之间)存储器之间)(1 1 1 1)加载)加载)加载)加载/ / / /存储指令存储指令存储指令存储指令CondCondCondCond如没有此项表示无条件操作如没有此项表示无条件操作如没有此项表示无条件操作如没有此项表示无条件操作LDR/STRLDR/STRLDR/STRLDR/STR: 字操作字操作字操作字操作LDRLDRLDR

106、LDRH H H H/STR/STR/STR/STRH H H H:半字操作半字操作半字操作半字操作LDRLDRLDRLDRB B B B/STR/STR/STR/STRB B B B: 字节操作字节操作字节操作字节操作TTTT:表示只在用户模式下表示只在用户模式下表示只在用户模式下表示只在用户模式下例如:例如:例如:例如:LDRLDRLDRLDR R0 R0 R0 R0,R1R1R1R1;(;(;(;(R0R0R0R0) R1R1R1R1LDRLDRLDRLDRB B B BNENENENET R0T R0T R0T R0,R1R1R1R1 ;(;(;(;(R0R0R0R0) R1R1R1R

107、1在条件不相等时,在用户模式下执行字节装入操作在条件不相等时,在用户模式下执行字节装入操作在条件不相等时,在用户模式下执行字节装入操作在条件不相等时,在用户模式下执行字节装入操作第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 33 3 3 3 ARMARMARMARM微处理器的指令系统微处理器的指令系统微处理器的指令系统微处理器的指令系统3.3.4 3.3.4 3.3.4 3.3.4 ARMARMARMARM指令集指令集指令集指令集1.ARM1.ARM1.ARM1.ARM存储器访问指令存储器访问指令存储器访问指令存储器访问指令(寄存器(寄存器(寄存器(寄存

108、器 存储器之间)存储器之间)存储器之间)存储器之间)(2 2 2 2)批量加载)批量加载)批量加载)批量加载/ / / /存储指令存储指令存储指令存储指令LDMLDMLDMLDMcondcondcondcond Rn Rn Rn Rn! ,reglistreglistreglistreglist例如:例如:例如:例如:LDMLDMLDMLDMIAIAIAIA R0R0R0R0!,R1-R4R1-R4R1-R4R1-R4(R1R1R1R1) R0R0R0R0 (R2R2R2R2) R0+4R0+4R0+4R0+4(R3R3R3R3) R0+8R0+8R0+8R0+8(R4R4R4R4) R0+1

109、2R0+12R0+12R0+12STMSTMSTMSTMcondcondcondcond RnRnRnRn! ,reglistreglistreglistreglist第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 33 3 3 3 ARMARMARMARM微处理器的指令系统微处理器的指令系统微处理器的指令系统微处理器的指令系统3.3.4 3.3.4 3.3.4 3.3.4 ARMARMARMARM指令集指令集指令集指令集1.ARM1.ARM1.ARM1.ARM存储器访问指令存储器访问指令存储器访问指令存储器访问指令(寄存器(寄存器(寄存器(寄存器 存储器

110、之间)存储器之间)存储器之间)存储器之间)(3 3 3 3)寄存器与存储器之间交换指令)寄存器与存储器之间交换指令)寄存器与存储器之间交换指令)寄存器与存储器之间交换指令SWPSWPSWPSWPcondcondcondcondBBBB,RdRdRdRd,RmRmRmRm,RnRnRnRn操作:操作:操作:操作:(RdRdRdRd)RnRnRnRn(RmRmRmRm)RnRnRnRn例:例:例:例:SWPSWPSWPSWP R0 R0 R0 R0,R1R1R1R1,R2R2R2R2操作:操作:操作:操作:(R0R0R0R0)R2R2R2R2(R1R1R1R1)RnRnRnRn第三章第三章 ARM

111、ARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 33 3 3 3 ARMARMARMARM微处理器的指令系统微处理器的指令系统微处理器的指令系统微处理器的指令系统3.3.4 3.3.4 3.3.4 3.3.4 ARMARMARMARM指令集指令集指令集指令集2.ARM2.ARM2.ARM2.ARM数据处理指令数据处理指令数据处理指令数据处理指令1 1 1 1)数据传送指令)数据传送指令)数据传送指令)数据传送指令(1 1 1 1)数据传送指令)数据传送指令)数据传送指令)数据传送指令MOVMOVMOVMOVcondScondScondScondS Rd Rd Rd Rd,op

112、erand2operand2operand2operand2其中:其中:其中:其中: operand2operand2operand2operand2可以为:可以为:可以为:可以为: 寄存器寄存器寄存器寄存器立即数立即数立即数立即数操作:操作:操作:操作:(RdRdRdRd)(operand2operand2operand2operand2)例:例:例:例:MOVMOVMOVMOVR0R0R0R0,R1R1R1R1;(R0R0R0R0)(R1R1R1R1)第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 33 3 3 3 ARMARMARMARM微处理器的指

113、令系统微处理器的指令系统微处理器的指令系统微处理器的指令系统3.3.4 3.3.4 3.3.4 3.3.4 ARMARMARMARM指令集指令集指令集指令集2.ARM2.ARM2.ARM2.ARM数据处理指令数据处理指令数据处理指令数据处理指令1 1 1 1)数据传送指令)数据传送指令)数据传送指令)数据传送指令(2 2 2 2)数据非传送指令)数据非传送指令)数据非传送指令)数据非传送指令MVNMVNMVNMVNcondScondScondScondS Rd Rd Rd Rd,operand2operand2operand2operand2操作:操作:操作:操作:(RdRdRdRd)(ope

114、rand2operand2operand2operand2)第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 33 3 3 3 ARMARMARMARM微处理器的指令系统微处理器的指令系统微处理器的指令系统微处理器的指令系统3.3.4 3.3.4 3.3.4 3.3.4 ARMARMARMARM指令集指令集指令集指令集2.ARM2.ARM2.ARM2.ARM数据处理指令数据处理指令数据处理指令数据处理指令2 2 2 2)算数逻辑运算指令)算数逻辑运算指令)算数逻辑运算指令)算数逻辑运算指令(1 1 1 1)加法指令)加法指令)加法指令)加法指令ADDADDA

115、DDADDcondScondScondScondS Rd Rd Rd Rd,RnRnRnRn,operand2 operand2 operand2 operand2 操作:操作:操作:操作:(RdRdRdRd)(RnRnRnRn)+ + + +(operand2operand2operand2operand2)第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 33 3 3 3 ARMARMARMARM微处理器的指令系统微处理器的指令系统微处理器的指令系统微处理器的指令系统3.3.4 3.3.4 3.3.4 3.3.4 ARMARMARMARM指令集指令集指令

116、集指令集2.ARM2.ARM2.ARM2.ARM数据处理指令数据处理指令数据处理指令数据处理指令2 2 2 2)算数逻辑运算指令)算数逻辑运算指令)算数逻辑运算指令)算数逻辑运算指令(2 2 2 2)减法指令)减法指令)减法指令)减法指令SUBSUBSUBSUBcondScondScondScondS Rd Rd Rd Rd,RnRnRnRn,operand2 operand2 operand2 operand2 操作:操作:操作:操作:(RdRdRdRd)(RnRnRnRn)- - - -(operand2operand2operand2operand2) 第三章第三章 ARMARM微处理器

117、体系结构与指令集微处理器体系结构与指令集3 3 3 33 3 3 3 ARMARMARMARM微处理器的指令系统微处理器的指令系统微处理器的指令系统微处理器的指令系统3.3.4 3.3.4 3.3.4 3.3.4 ARMARMARMARM指令集指令集指令集指令集2.ARM2.ARM2.ARM2.ARM数据处理指令数据处理指令数据处理指令数据处理指令2 2 2 2)算数逻辑运算指令)算数逻辑运算指令)算数逻辑运算指令)算数逻辑运算指令(3 3 3 3)逆向减法指令)逆向减法指令)逆向减法指令)逆向减法指令RSBRSBRSBRSBcondScondScondScondS Rd Rd Rd Rd,R

118、nRnRnRn,operand2 operand2 operand2 operand2 操作:操作:操作:操作:(RdRdRdRd)(operand2operand2operand2operand2)- - - -(RnRnRnRn)第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 33 3 3 3 ARMARMARMARM微处理器的指令系统微处理器的指令系统微处理器的指令系统微处理器的指令系统3.3.4 3.3.4 3.3.4 3.3.4 ARMARMARMARM指令集指令集指令集指令集2.ARM2.ARM2.ARM2.ARM数据处理指令数据处理指令数据处

119、理指令数据处理指令2 2 2 2)算数逻辑运算指令)算数逻辑运算指令)算数逻辑运算指令)算数逻辑运算指令(4 4 4 4)带进位加法指令)带进位加法指令)带进位加法指令)带进位加法指令ADCADCADCADCcondScondScondScondS Rd Rd Rd Rd,RnRnRnRn,operand2 operand2 operand2 operand2 操作:操作:操作:操作:(RdRdRdRd)(RnRnRnRn)+ + + +(operand2operand2operand2operand2)+ C+ C+ C+ C 第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结

120、构与指令集3 3 3 33 3 3 3 ARMARMARMARM微处理器的指令系统微处理器的指令系统微处理器的指令系统微处理器的指令系统3.3.4 3.3.4 3.3.4 3.3.4 ARMARMARMARM指令集指令集指令集指令集2.ARM2.ARM2.ARM2.ARM数据处理指令数据处理指令数据处理指令数据处理指令2 2 2 2)算数逻辑运算指令)算数逻辑运算指令)算数逻辑运算指令)算数逻辑运算指令(5 5 5 5)带借位减法指令)带借位减法指令)带借位减法指令)带借位减法指令SCBSCBSCBSCBcondScondScondScondS Rd Rd Rd Rd,RnRnRnRn,ope

121、rand2operand2operand2operand2操作:操作:操作:操作:(RdRdRdRd)(RnRnRnRn)- - - -(operand2operand2operand2operand2)- C- C- C- C第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 33 3 3 3 ARMARMARMARM微处理器的指令系统微处理器的指令系统微处理器的指令系统微处理器的指令系统3.3.4 3.3.4 3.3.4 3.3.4 ARMARMARMARM指令集指令集指令集指令集2.ARM2.ARM2.ARM2.ARM数据处理指令数据处理指令数据处理指令

122、数据处理指令2 2 2 2)算数逻辑运算指令)算数逻辑运算指令)算数逻辑运算指令)算数逻辑运算指令(6 6 6 6)带借位逆向减法指令)带借位逆向减法指令)带借位逆向减法指令)带借位逆向减法指令RSCRSCRSCRSCcondScondScondScondS Rd Rd Rd Rd,RnRnRnRn,operand2operand2operand2operand2操作:操作:操作:操作:(RdRdRdRd)(operand2operand2operand2operand2)- - - -(RnRnRnRn)- C- C- C- C第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结

123、构与指令集3 3 3 33 3 3 3 ARMARMARMARM微处理器的指令系统微处理器的指令系统微处理器的指令系统微处理器的指令系统3.3.4 3.3.4 3.3.4 3.3.4 ARMARMARMARM指令集指令集指令集指令集2.ARM2.ARM2.ARM2.ARM数据处理指令数据处理指令数据处理指令数据处理指令2 2 2 2)算数逻辑运算指令)算数逻辑运算指令)算数逻辑运算指令)算数逻辑运算指令(7 7 7 7)逻辑与指令)逻辑与指令)逻辑与指令)逻辑与指令ANDANDANDANDcondScondScondScondS Rd Rd Rd Rd,RnRnRnRn,operand2 op

124、erand2 operand2 operand2 操作:操作:操作:操作:(RdRdRdRd)(RnRnRnRn) (operand2operand2operand2operand2)第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 33 3 3 3 ARMARMARMARM微处理器的指令系统微处理器的指令系统微处理器的指令系统微处理器的指令系统3.3.4 3.3.4 3.3.4 3.3.4 ARMARMARMARM指令集指令集指令集指令集2.ARM2.ARM2.ARM2.ARM数据处理指令数据处理指令数据处理指令数据处理指令2 2 2 2)算数逻辑运算指令

125、)算数逻辑运算指令)算数逻辑运算指令)算数逻辑运算指令(8 8 8 8)逻辑或指令)逻辑或指令)逻辑或指令)逻辑或指令ORRORRORRORRcondScondScondScondS Rd Rd Rd Rd,RnRnRnRn,operand2 operand2 operand2 operand2 操作:操作:操作:操作:(RdRdRdRd)(RnRnRnRn) (operand2operand2operand2operand2) 第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 33 3 3 3 ARMARMARMARM微处理器的指令系统微处理器的指令系统微

126、处理器的指令系统微处理器的指令系统3.3.4 3.3.4 3.3.4 3.3.4 ARMARMARMARM指令集指令集指令集指令集2.ARM2.ARM2.ARM2.ARM数据处理指令数据处理指令数据处理指令数据处理指令2 2 2 2)算数逻辑运算指令)算数逻辑运算指令)算数逻辑运算指令)算数逻辑运算指令(9 9 9 9)逻辑异或指令)逻辑异或指令)逻辑异或指令)逻辑异或指令EOREOREOREORcondScondScondScondS Rd Rd Rd Rd,RnRnRnRn,operand2 operand2 operand2 operand2 操作:操作:操作:操作:(RdRdRdRd)

127、(RnRnRnRn) (operand2operand2operand2operand2)第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 33 3 3 3 ARMARMARMARM微处理器的指令系统微处理器的指令系统微处理器的指令系统微处理器的指令系统3.3.4 3.3.4 3.3.4 3.3.4 ARMARMARMARM指令集指令集指令集指令集2.ARM2.ARM2.ARM2.ARM数据处理指令数据处理指令数据处理指令数据处理指令2 2 2 2)算数逻辑运算指令)算数逻辑运算指令)算数逻辑运算指令)算数逻辑运算指令(10101010)位清除指令)位清除指

128、令)位清除指令)位清除指令BICBICBICBICcondScondScondScondS Rd Rd Rd Rd,RnRnRnRn,operand2 operand2 operand2 operand2 操作:操作:操作:操作:(RdRdRdRd)(RnRnRnRn) (operand2operand2operand2operand2)说明:说明:说明:说明:由由由由operand2operand2operand2operand2指定被清除的对象(位)指定被清除的对象(位)指定被清除的对象(位)指定被清除的对象(位)operand2operand2operand2operand2中某一位是中

129、某一位是中某一位是中某一位是“1”“1”“1”“1”,(,(,(,(RnRnRnRn)中对应的位清零中对应的位清零中对应的位清零中对应的位清零第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 33 3 3 3 ARMARMARMARM微处理器的指令系统微处理器的指令系统微处理器的指令系统微处理器的指令系统3.3.4 3.3.4 3.3.4 3.3.4 ARMARMARMARM指令集指令集指令集指令集2.ARM2.ARM2.ARM2.ARM数据处理指令数据处理指令数据处理指令数据处理指令3 3 3 3)比较指令)比较指令)比较指令)比较指令(1 1 1 1)比

130、较指令)比较指令)比较指令)比较指令CMPCMPCMPCMPcondcondcondcond Rn Rn Rn Rn,operand2operand2operand2operand2操作:操作:操作:操作:(RnRnRnRn)- - - -(operand2operand2operand2operand2) 对应的对应的对应的对应的减法指令减法指令减法指令减法指令SUBSUBSUBSUBcondScondScondScondS Rd Rd Rd Rd,RnRnRnRn,operand2operand2operand2operand2操作:操作:操作:操作:(RdRdRdRd)(RnRnRnRn

131、)- - - -(operand2operand2operand2operand2)第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 33 3 3 3 ARMARMARMARM微处理器的指令系统微处理器的指令系统微处理器的指令系统微处理器的指令系统3.3.4 3.3.4 3.3.4 3.3.4 ARMARMARMARM指令集指令集指令集指令集2.ARM2.ARM2.ARM2.ARM数据处理指令数据处理指令数据处理指令数据处理指令3 3 3 3)比较指令)比较指令)比较指令)比较指令(2 2 2 2)负数比较指令)负数比较指令)负数比较指令)负数比较指令CMN

132、CMNCMNCMNcondcondcondcond Rn Rn Rn Rn,operand2 operand2 operand2 operand2 操作:操作:操作:操作:(RnRnRnRn)- - - -(-operand2-operand2-operand2-operand2)第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 33 3 3 3 ARMARMARMARM微处理器的指令系统微处理器的指令系统微处理器的指令系统微处理器的指令系统3.3.4 3.3.4 3.3.4 3.3.4 ARMARMARMARM指令集指令集指令集指令集2.ARM2.ARM2

133、.ARM2.ARM数据处理指令数据处理指令数据处理指令数据处理指令3 3 3 3)比较指令)比较指令)比较指令)比较指令(3 3 3 3)位测试指令)位测试指令)位测试指令)位测试指令TSTTSTTSTTSTcondcondcondcond Rn Rn Rn Rn,operand2 operand2 operand2 operand2 操作:操作:操作:操作:(RnRnRnRn) (operand2operand2operand2operand2)第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 33 3 3 3 ARMARMARMARM微处理器的指令系统微

134、处理器的指令系统微处理器的指令系统微处理器的指令系统3.3.4 3.3.4 3.3.4 3.3.4 ARMARMARMARM指令集指令集指令集指令集2.ARM2.ARM2.ARM2.ARM数据处理指令数据处理指令数据处理指令数据处理指令3 3 3 3)比较指令)比较指令)比较指令)比较指令(4 4 4 4)相等测试指令)相等测试指令)相等测试指令)相等测试指令TEQTEQTEQTEQcondcondcondcond Rn Rn Rn Rn,operand2 operand2 operand2 operand2 操作:操作:操作:操作:(RnRnRnRn) (operand2operand2op

135、erand2operand2)第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 33 3 3 3 ARMARMARMARM微处理器的指令系统微处理器的指令系统微处理器的指令系统微处理器的指令系统3.3.4 3.3.4 3.3.4 3.3.4 ARMARMARMARM指令集指令集指令集指令集2.ARM2.ARM2.ARM2.ARM数据处理指令数据处理指令数据处理指令数据处理指令4 4 4 4)乘法指令)乘法指令)乘法指令)乘法指令(1 1 1 1)32323232位乘法指令位乘法指令位乘法指令位乘法指令MULMULMULMULcondScondScondSco

136、ndS Rd Rd Rd Rd,RmRmRmRm,RsRsRsRs操作:操作:操作:操作:(RdRdRdRd)(RmRmRmRm)X X X X (RsRsRsRs) 说明说明说明说明:(RdRdRdRd)为低为低为低为低32323232位位位位(2 2 2 2)32323232位乘加指令位乘加指令位乘加指令位乘加指令MULMULMULMULcondScondScondScondS Rd Rd Rd Rd,RmRmRmRm,RsRsRsRs,RnRnRnRn操作:操作:操作:操作:(RdRdRdRd)(RmRmRmRm)X X X X (RsRsRsRs)+ + + +(RnRnRnRn) 说

137、明说明说明说明:(RdRdRdRd)为低为低为低为低32323232位位位位第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 33 3 3 3 ARMARMARMARM微处理器的指令系统微处理器的指令系统微处理器的指令系统微处理器的指令系统3.3.4 3.3.4 3.3.4 3.3.4 ARMARMARMARM指令集指令集指令集指令集2.ARM2.ARM2.ARM2.ARM数据处理指令数据处理指令数据处理指令数据处理指令4 4 4 4)乘法指令)乘法指令)乘法指令)乘法指令(3 3 3 3)64646464位无符号乘法指令位无符号乘法指令位无符号乘法指令位无

138、符号乘法指令UMULLUMULLUMULLUMULLcondScondScondScondS RdLo RdLo RdLo RdLo,RdHiRdHiRdHiRdHi,RmRmRmRm,RsRsRsRs操作操作操作操作:(RdHiRdHiRdHiRdHi)()()()(RdLoRdLoRdLoRdLo)(RmRmRmRm)X X X X (RsRsRsRs) (4 4 4 4)64646464位无符号乘加指令位无符号乘加指令位无符号乘加指令位无符号乘加指令UMLALUMLALUMLALUMLALcondScondScondScondS RdLo RdLo RdLo RdLo,RdHiRdHiR

139、dHiRdHi,RmRmRmRm,RsRsRsRs操作:操作:操作:操作:(RdHiRdHiRdHiRdHi)()()()(RdLoRdLoRdLoRdLo)(RmRmRmRm)X X X X (RsRsRsRs)+ + + +(RdHiRdHiRdHiRdHi)()()()(RdLo)RdLo)RdLo)RdLo) 第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 33 3 3 3 ARMARMARMARM微处理器的指令系统微处理器的指令系统微处理器的指令系统微处理器的指令系统3.3.4 3.3.4 3.3.4 3.3.4 ARMARMARMARM指令集指

140、令集指令集指令集2.ARM2.ARM2.ARM2.ARM数据处理指令数据处理指令数据处理指令数据处理指令4 4 4 4)乘法指令)乘法指令)乘法指令)乘法指令(5 5 5 5)64646464位有符号乘法指令位有符号乘法指令位有符号乘法指令位有符号乘法指令SMULLSMULLSMULLSMULLcondScondScondScondS RdLo RdLo RdLo RdLo,RdHiRdHiRdHiRdHi,RmRmRmRm,RsRsRsRs操作操作操作操作:(RdHiRdHiRdHiRdHi)()()()(RdLoRdLoRdLoRdLo)(RmRmRmRm)X X X X (RsRsRsR

141、s) (6 6 6 6)64646464位有符号乘加指令位有符号乘加指令位有符号乘加指令位有符号乘加指令SMLALSMLALSMLALSMLALcondScondScondScondS RdLo RdLo RdLo RdLo,RdHiRdHiRdHiRdHi,RmRmRmRm,RsRsRsRs操作:操作:操作:操作:(RdHiRdHiRdHiRdHi)()()()(RdLoRdLoRdLoRdLo)(RmRmRmRm)X X X X (RsRsRsRs)+ + + +(RdHiRdHiRdHiRdHi)()()()(RdLo)RdLo)RdLo)RdLo) 第三章第三章 ARMARM微处理器体

142、系结构与指令集微处理器体系结构与指令集3 3 3 33 3 3 3 ARMARMARMARM微处理器的指令系统微处理器的指令系统微处理器的指令系统微处理器的指令系统3.3.4 3.3.4 3.3.4 3.3.4 ARMARMARMARM指令集指令集指令集指令集3.ARM3.ARM3.ARM3.ARM跳转指令跳转指令跳转指令跳转指令(1 1 1 1)跳转指令)跳转指令)跳转指令)跳转指令 B B B BB B B Bcondcondcondcond Label Label Label Label相当于:相当于:相当于:相当于:无条件无条件无条件无条件/ / / /条件条件条件条件转移转移转移转移

143、指令,取决于指令,取决于指令,取决于指令,取决于condcondcondcond的内容的内容的内容的内容第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 33 3 3 3 ARMARMARMARM微处理器的指令系统微处理器的指令系统微处理器的指令系统微处理器的指令系统3.3.4 3.3.4 3.3.4 3.3.4 ARMARMARMARM指令集指令集指令集指令集3.ARM3.ARM3.ARM3.ARM跳转指令跳转指令跳转指令跳转指令(2 2 2 2)跳转指令)跳转指令)跳转指令)跳转指令 BLBLBLBLBLBLBLBLcondcondcondcond La

144、bel Label Label Label同同同同B B B B指令,但是同时将下一条指令地址复制到指令,但是同时将下一条指令地址复制到指令,但是同时将下一条指令地址复制到指令,但是同时将下一条指令地址复制到R14R14R14R14(LRLRLRLR)中中中中相当于:相当于:相当于:相当于:无条件无条件无条件无条件/ / / /条件条件条件条件子程序调用子程序调用子程序调用子程序调用指令指令指令指令第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 33 3 3 3 ARMARMARMARM微处理器的指令系统微处理器的指令系统微处理器的指令系统微处理器的指令系

145、统3.3.4 3.3.4 3.3.4 3.3.4 ARMARMARMARM指令集指令集指令集指令集3.ARM3.ARM3.ARM3.ARM跳转指令跳转指令跳转指令跳转指令(3 3 3 3)带状态切换跳转指令)带状态切换跳转指令)带状态切换跳转指令)带状态切换跳转指令 BXBXBXBXBXBXBXBXcondcondcondcond Rm Rm Rm Rm无条件无条件无条件无条件/ / / /条件条件条件条件跳转到跳转到跳转到跳转到RmRmRmRm指定地址执行。指定地址执行。指定地址执行。指定地址执行。如:如:如:如:Rm0=1Rm0=1Rm0=1Rm0=1 自动切换自动切换自动切换自动切换/

146、/ / /解释为解释为解释为解释为ThumbThumbThumbThumb指令指令指令指令 Rm0=0Rm0=0Rm0=0Rm0=0 自动切换自动切换自动切换自动切换/ / / /解释为解释为解释为解释为ARMARMARMARM指令指令指令指令第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 33 3 3 3 ARMARMARMARM微处理器的指令系统微处理器的指令系统微处理器的指令系统微处理器的指令系统3.3.4 3.3.4 3.3.4 3.3.4 ARMARMARMARM指令集指令集指令集指令集4.ARM4.ARM4.ARM4.ARM协处理器指令协处理器

147、指令协处理器指令协处理器指令用于与协处理器(如用于与协处理器(如用于与协处理器(如用于与协处理器(如DSPDSPDSPDSP处理器)交换数据的指令处理器)交换数据的指令处理器)交换数据的指令处理器)交换数据的指令第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 33 3 3 3 ARMARMARMARM微处理器的指令系统微处理器的指令系统微处理器的指令系统微处理器的指令系统3.3.4 3.3.4 3.3.4 3.3.4 ARMARMARMARM指令集指令集指令集指令集5.ARM5.ARM5.ARM5.ARM杂项指令杂项指令杂项指令杂项指令(1 1 1 1)软

148、件中断指令)软件中断指令)软件中断指令)软件中断指令 SWISWISWISWISWISWISWISWIcondcondcondcond immed_24 immed_24 immed_24 immed_24执行过程:执行过程:执行过程:执行过程:1111将模式切换到管理模式将模式切换到管理模式将模式切换到管理模式将模式切换到管理模式2222将将将将CPSRCPSRCPSRCPSR内容保存到内容保存到内容保存到内容保存到SPSR_svcSPSR_svcSPSR_svcSPSR_svc3333从从从从SWISWISWISWI向量处取指令执行向量处取指令执行向量处取指令执行向量处取指令执行第三章第三

149、章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 33 3 3 3 ARMARMARMARM微处理器的指令系统微处理器的指令系统微处理器的指令系统微处理器的指令系统3.3.4 3.3.4 3.3.4 3.3.4 ARMARMARMARM指令集指令集指令集指令集5.ARM5.ARM5.ARM5.ARM杂项指令杂项指令杂项指令杂项指令(2 2 2 2)读状态寄存器指令)读状态寄存器指令)读状态寄存器指令)读状态寄存器指令 MRSMRSMRSMRSMRSMRSMRSMRScondcondcondcond Rd Rd Rd Rd,psrpsrpsrpsr;(RdRdRdRd)

150、(X X X XPSRPSRPSRPSR)说明:说明:说明:说明:1111在在在在用户用户用户用户模式模式模式模式/ / / /系统系统系统系统模式没有备份用的模式没有备份用的模式没有备份用的模式没有备份用的SPSRSPSRSPSRSPSR,所以要保存,所以要保存,所以要保存,所以要保存CPSRCPSRCPSRCPSR的的的的内容,需要将其存在普通寄存器中内容,需要将其存在普通寄存器中内容,需要将其存在普通寄存器中内容,需要将其存在普通寄存器中2222在其他模式中,如果遇到多级中断(异常),不仅需要保护在其他模式中,如果遇到多级中断(异常),不仅需要保护在其他模式中,如果遇到多级中断(异常),

151、不仅需要保护在其他模式中,如果遇到多级中断(异常),不仅需要保护CPSRCPSRCPSRCPSR内容,也需要保存内容,也需要保存内容,也需要保存内容,也需要保存SPSRSPSRSPSRSPSR内容。内容。内容。内容。第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 33 3 3 3 ARMARMARMARM微处理器的指令系统微处理器的指令系统微处理器的指令系统微处理器的指令系统3.3.4 3.3.4 3.3.4 3.3.4 ARMARMARMARM指令集指令集指令集指令集5.ARM5.ARM5.ARM5.ARM杂项指令杂项指令杂项指令杂项指令(3 3 3 3

152、)写状态寄存器指令)写状态寄存器指令)写状态寄存器指令)写状态寄存器指令 MSRMSRMSRMSRMSRMSRMSRMSRcondcondcondcond psr_fields,#immed_8r psr_fields,#immed_8r psr_fields,#immed_8r psr_fields,#immed_8r(X X X XPSRPSRPSRPSR) immed_8r immed_8r immed_8r immed_8r操作:修改操作:修改操作:修改操作:修改CPSR/SPSRCPSR/SPSRCPSR/SPSRCPSR/SPSR某域的内容某域的内容某域的内容某域的内容说明:说明:

153、说明:说明:CPSR/SPSRCPSR/SPSRCPSR/SPSRCPSR/SPSR均为均为均为均为32323232位寄存器,分为位寄存器,分为位寄存器,分为位寄存器,分为4 4 4 4个域个域个域个域 c c c c:CPSRCPSRCPSRCPSR中的中的中的中的control control control control field field field field (CPSRCPSRCPSRCPSR7:07:07:07:0)x x x x:CPSRCPSRCPSRCPSR中的中的中的中的extendextendextendextend field field field field

154、 (CPSRCPSRCPSRCPSR15:815:815:815:8) s s s s:CPSRCPSRCPSRCPSR中的中的中的中的status status status status field field field field (CPSRCPSRCPSRCPSR23:1623:1623:1623:16)f f f f:CPSRCPSRCPSRCPSR中的中的中的中的flag flag flag flag field field field field (CPSRCPSRCPSRCPSR31:2431:2431:2431:24)MSRMSRMSRMSRcondcondcondcond

155、 psr_fields,Rm psr_fields,Rm psr_fields,Rm psr_fields,Rm(X X X XPSRPSRPSRPSR) (RmRmRmRm)第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 33 3 3 3 ARMARMARMARM微处理器的指令系统微处理器的指令系统微处理器的指令系统微处理器的指令系统3.3.4 3.3.4 3.3.4 3.3.4 ARMARMARMARM指令集指令集指令集指令集6.ARM6.ARM6.ARM6.ARM伪指令伪指令伪指令伪指令伪指令:伪指令:伪指令:伪指令:编译器定义伪指令,在编译时被替换

156、成等效的编译器定义伪指令,在编译时被替换成等效的编译器定义伪指令,在编译时被替换成等效的编译器定义伪指令,在编译时被替换成等效的ARMARMARMARM指令指令指令指令(1 1 1 1)小范围的地址读取伪指令)小范围的地址读取伪指令)小范围的地址读取伪指令)小范围的地址读取伪指令 ADRADRADRADR ADR ADR ADR ADR condcondcondcond register register register register,experexperexperexper功能:功能:功能:功能:将基于将基于将基于将基于PCPCPCPC的地址偏移量读到寄存器中的地址偏移量读到寄存器中的

157、地址偏移量读到寄存器中的地址偏移量读到寄存器中实际操作:实际操作:实际操作:实际操作:被编译成一条真正的指令。如:被编译成一条真正的指令。如:被编译成一条真正的指令。如:被编译成一条真正的指令。如:MOVMOVMOVMOV指令指令指令指令 如果不能找到合适指令,将显示编译失败如果不能找到合适指令,将显示编译失败如果不能找到合适指令,将显示编译失败如果不能找到合适指令,将显示编译失败第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 33 3 3 3 ARMARMARMARM微处理器的指令系统微处理器的指令系统微处理器的指令系统微处理器的指令系统3.3.4 3.

158、3.4 3.3.4 3.3.4 ARMARMARMARM指令集指令集指令集指令集6.ARM6.ARM6.ARM6.ARM伪指令伪指令伪指令伪指令(2 2 2 2)中等范围的地址读取伪指令)中等范围的地址读取伪指令)中等范围的地址读取伪指令)中等范围的地址读取伪指令 ADRLADRLADRLADRL ADRL ADRL ADRL ADRL condcondcondcond register register register register,experexperexperexper功能:功能:功能:功能:将基于将基于将基于将基于PCPCPCPC或或或或某个寄存器某个寄存器某个寄存器某个寄存器的

159、地址偏移量读到寄存器中的地址偏移量读到寄存器中的地址偏移量读到寄存器中的地址偏移量读到寄存器中实际操作:实际操作:实际操作:实际操作:被编译成两条真正的指令,如果不能找到合适指令,将被编译成两条真正的指令,如果不能找到合适指令,将被编译成两条真正的指令,如果不能找到合适指令,将被编译成两条真正的指令,如果不能找到合适指令,将 显示编译失败显示编译失败显示编译失败显示编译失败第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 33 3 3 3 ARMARMARMARM微处理器的指令系统微处理器的指令系统微处理器的指令系统微处理器的指令系统3.3.4 3.3.4

160、3.3.4 3.3.4 ARMARMARMARM指令集指令集指令集指令集6.ARM6.ARM6.ARM6.ARM伪指令伪指令伪指令伪指令(3 3 3 3)大范围的地址读取伪指令)大范围的地址读取伪指令)大范围的地址读取伪指令)大范围的地址读取伪指令 LDRLDRLDRLDR LDR LDR LDR LDR condcondcondcond register register register register,=exper/Label_expr=exper/Label_expr=exper/Label_expr=exper/Label_expr功能:将功能:将功能:将功能:将32323232位

161、立即数存到指定的寄存器中位立即数存到指定的寄存器中位立即数存到指定的寄存器中位立即数存到指定的寄存器中实际操作:实际操作:实际操作:实际操作:1111如果常数未超出如果常数未超出如果常数未超出如果常数未超出MOV/MVNMOV/MVNMOV/MVNMOV/MVN指令范围,将变成指令范围,将变成指令范围,将变成指令范围,将变成MOV/MVNMOV/MVNMOV/MVNMOV/MVN指令指令指令指令 2222如果常数超出上述范围,将常数放入字池(存储区),然后如果常数超出上述范围,将常数放入字池(存储区),然后如果常数超出上述范围,将常数放入字池(存储区),然后如果常数超出上述范围,将常数放入字池

162、(存储区),然后使用使用使用使用LDRLDRLDRLDR指令从该字池中读出该常量。指令从该字池中读出该常量。指令从该字池中读出该常量。指令从该字池中读出该常量。注意:区分此条伪指令与注意:区分此条伪指令与注意:区分此条伪指令与注意:区分此条伪指令与LDRLDRLDRLDR指令的区别指令的区别指令的区别指令的区别第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 33 3 3 3 ARMARMARMARM微处理器的指令系统微处理器的指令系统微处理器的指令系统微处理器的指令系统3.3.4 3.3.4 3.3.4 3.3.4 ARMARMARMARM指令集指令集指令

163、集指令集6.ARM6.ARM6.ARM6.ARM伪指令伪指令伪指令伪指令(4 4 4 4)空操作伪指令)空操作伪指令)空操作伪指令)空操作伪指令 NOPNOPNOPNOPNOPNOPNOPNOP将被编译成一些无意义的指令。如:将被编译成一些无意义的指令。如:将被编译成一些无意义的指令。如:将被编译成一些无意义的指令。如:MOV R0MOV R0MOV R0MOV R0,R0R0R0R0 第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 33 3 3 3 ARMARMARMARM微处理器的指令系统微处理器的指令系统微处理器的指令系统微处理器的指令系统3.3.5

164、 3.3.5 3.3.5 3.3.5 ThumbThumbThumbThumb指令集指令集指令集指令集ThumbThumbThumbThumb指令集可以看作是指令集可以看作是指令集可以看作是指令集可以看作是ARMARMARMARM指令系统的子集指令系统的子集指令系统的子集指令系统的子集ThumbThumbThumbThumb指令集采用指令集采用指令集采用指令集采用16161616位代码、但不是一个完整的指令系统位代码、但不是一个完整的指令系统位代码、但不是一个完整的指令系统位代码、但不是一个完整的指令系统如:如:如:如:1111没有协处理器、处理没有协处理器、处理没有协处理器、处理没有协处理器

165、、处理CPRSCPRSCPRSCPRS、乘法、乘法、乘法、乘法/ / / /乘加等指令乘加等指令乘加等指令乘加等指令2222除了除了除了除了B B B B指令外,其余指令均是无条件指令指令外,其余指令均是无条件指令指令外,其余指令均是无条件指令指令外,其余指令均是无条件指令3333采用采用采用采用2 2 2 2字节地址格式字节地址格式字节地址格式字节地址格式在编写在编写在编写在编写ThumbThumbThumbThumb指令时:指令时:指令时:指令时:1111需要用需要用需要用需要用CODE16CODE16CODE16CODE16伪指令声明伪指令声明伪指令声明伪指令声明2222使用使用使用使用

166、BXBXBXBX指令切换(改变标志指令切换(改变标志指令切换(改变标志指令切换(改变标志T T T T状态)状态)状态)状态) 第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 33 3 3 3 ARMARMARMARM微处理器的指令系统微处理器的指令系统微处理器的指令系统微处理器的指令系统3.3.5 3.3.5 3.3.5 3.3.5 ThumbThumbThumbThumb指令集指令集指令集指令集ThumbThumbThumbThumb指令与指令与指令与指令与ARMARMARMARM指令的区别:指令的区别:指令的区别:指令的区别:1111跳转指令:跳转指

167、令:跳转指令:跳转指令:B B B B指令指令指令指令:地址有限制:地址有限制:地址有限制:地址有限制BLBLBLBL指令(转子指令):无条件执行指令(转子指令):无条件执行指令(转子指令):无条件执行指令(转子指令):无条件执行2222数据处理指令:数据处理指令:数据处理指令:数据处理指令: 绝大多数情况没有第绝大多数情况没有第绝大多数情况没有第绝大多数情况没有第3 3 3 3个寄存器个寄存器个寄存器个寄存器访问访问访问访问R8-R15R8-R15R8-R15R8-R15时不能更新时不能更新时不能更新时不能更新CPRSCPRSCPRSCPRS状态状态状态状态3333单寄存器加载单寄存器加载单

168、寄存器加载单寄存器加载/ / / /存储:只能使用存储:只能使用存储:只能使用存储:只能使用R0-R7R0-R7R0-R7R0-R74444多寄存器加载多寄存器加载多寄存器加载多寄存器加载/ / / /存储:存储:存储:存储:可以访问任何地址区间可以访问任何地址区间可以访问任何地址区间可以访问任何地址区间使用使用使用使用R13R13R13R13作为堆栈指针作为堆栈指针作为堆栈指针作为堆栈指针SPSPSPSPPUSHPUSHPUSHPUSH可以存储可以存储可以存储可以存储R14R14R14R14POPPOPPOPPOP可以加载可以加载可以加载可以加载R15R15R15R15(PCPCPCPC)第

169、三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 33 3 3 3 ARMARMARMARM微处理器的指令系统微处理器的指令系统微处理器的指令系统微处理器的指令系统3.3.5 3.3.5 3.3.5 3.3.5 ThumbThumbThumbThumb指令集指令集指令集指令集ThumbThumbThumbThumb指令与指令与指令与指令与ARMARMARMARM指令的效率比较指令的效率比较指令的效率比较指令的效率比较ThumbThumbThumbThumb指令指令指令指令ARMARMARMARM指令指令指令指令占用存储空间占用存储空间占用存储空间占用存储空间6

170、0%-70%60%-70%60%-70%60%-70%100%100%100%100%同等功能所需指令条数同等功能所需指令条数同等功能所需指令条数同等功能所需指令条数130%-140%130%-140%130%-140%130%-140%100%100%100%100%使用使用使用使用32323232位存储器速度位存储器速度位存储器速度位存储器速度70%70%70%70%100%100%100%100%使用使用使用使用16161616位存储器速度位存储器速度位存储器速度位存储器速度140%-150%140%-150%140%-150%140%-150%100%100%100%100%功耗功耗功

171、耗功耗70%70%70%70%100%100%100%100%第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 34 4 4 4 ARMARMARMARM微处理器编程简介微处理器编程简介微处理器编程简介微处理器编程简介3.4.1 3.4.1 3.4.1 3.4.1 ARMARMARMARM汇编语言的文件格式汇编语言的文件格式汇编语言的文件格式汇编语言的文件格式 程序类型程序类型程序类型程序类型 文件名文件名文件名文件名 汇编汇编汇编汇编 *.S *.S *.S *.S 引入文件引入文件引入文件引入文件 *.INC *.INC *.INC *.INC C C

172、C C程序程序程序程序 *.C *.C *.C *.C 头文件头文件头文件头文件 *.H *.H *.H *.H第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 34 4 4 4 ARMARMARMARM微处理器编程简介微处理器编程简介微处理器编程简介微处理器编程简介3.4.2 3.4.2 3.4.2 3.4.2 ARMARMARMARM汇编语言的语句格式汇编语言的语句格式汇编语言的语句格式汇编语言的语句格式 标号标号标号标号 ;注释;注释;注释;注释 1.1.1.1.汇编语言程序中的标号汇编语言程序中的标号汇编语言程序中的标号汇编语言程序中的标号(1 1

173、1 1)标号(符号化的地址)标号(符号化的地址)标号(符号化的地址)标号(符号化的地址)标号生成方式:标号生成方式:标号生成方式:标号生成方式:1111基于基于基于基于PCPCPCPC:PCPCPCPC当前值当前值当前值当前值+/-+/-+/-+/- 一个数字常量一个数字常量一个数字常量一个数字常量2222基于寄存器:基于寄存器:基于寄存器:基于寄存器: 寄存器值寄存器值寄存器值寄存器值+/-+/-+/-+/- 一个数字常量一个数字常量一个数字常量一个数字常量3333绝对地址:绝对地址:绝对地址:绝对地址:(2 2 2 2)局部标号(用于局部范围中,如:宏)局部标号(用于局部范围中,如:宏)局

174、部标号(用于局部范围中,如:宏)局部标号(用于局部范围中,如:宏)格式:格式:格式:格式:N N N Nroutnameroutnameroutnameroutname第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 34 4 4 4 ARMARMARMARM微处理器编程简介微处理器编程简介微处理器编程简介微处理器编程简介3.4.2 3.4.2 3.4.2 3.4.2 ARMARMARMARM汇编语言的语句格式汇编语言的语句格式汇编语言的语句格式汇编语言的语句格式2.2.2.2.汇编语言程序中的符号汇编语言程序中的符号汇编语言程序中的符号汇编语言程序中的符号

175、规则:规则:规则:规则:1111符号组成:字母、数字、下划线符号组成:字母、数字、下划线符号组成:字母、数字、下划线符号组成:字母、数字、下划线2222符号开头:字母开头(局部标号例外)符号开头:字母开头(局部标号例外)符号开头:字母开头(局部标号例外)符号开头:字母开头(局部标号例外)3333符号区分:字母大小写符号区分:字母大小写符号区分:字母大小写符号区分:字母大小写4444符号在其作用域是统一的符号在其作用域是统一的符号在其作用域是统一的符号在其作用域是统一的5555符号不能与系统内符号同名符号不能与系统内符号同名符号不能与系统内符号同名符号不能与系统内符号同名6666符号不能与指令助

176、记符、伪指令同名符号不能与指令助记符、伪指令同名符号不能与指令助记符、伪指令同名符号不能与指令助记符、伪指令同名第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 34 4 4 4 ARMARMARMARM微处理器编程简介微处理器编程简介微处理器编程简介微处理器编程简介3.4.2 3.4.2 3.4.2 3.4.2 ARMARMARMARM汇编语言的语句格式汇编语言的语句格式汇编语言的语句格式汇编语言的语句格式2.2.2.2.汇编语言程序中的符号汇编语言程序中的符号汇编语言程序中的符号汇编语言程序中的符号1 1 1 1)常量)常量)常量)常量(1 1 1 1)

177、数字常数数字常数数字常数数字常数(2 2 2 2)字符常量字符常量字符常量字符常量(3 3 3 3)布尔常量布尔常量布尔常量布尔常量2 2 2 2)变量)变量)变量)变量(1 1 1 1)数字变量数字变量数字变量数字变量(2 2 2 2)逻辑变量逻辑变量逻辑变量逻辑变量(3 3 3 3)字符串变量字符串变量字符串变量字符串变量第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 34 4 4 4 ARMARMARMARM微处理器编程简介微处理器编程简介微处理器编程简介微处理器编程简介3.4.2 3.4.2 3.4.2 3.4.2 ARMARMARMARM汇编语言

178、的语句格式汇编语言的语句格式汇编语言的语句格式汇编语言的语句格式3.3.3.3.汇编语言程序中的表达式和运算符汇编语言程序中的表达式和运算符汇编语言程序中的表达式和运算符汇编语言程序中的表达式和运算符常用表达式:常用表达式:常用表达式:常用表达式:(1 1 1 1)数字表达式数字表达式数字表达式数字表达式(2 2 2 2)逻辑表达式逻辑表达式逻辑表达式逻辑表达式(3 3 3 3)字符串表达式字符串表达式字符串表达式字符串表达式优先级次序优先级次序优先级次序优先级次序(1 1 1 1)优先级相同的双运算符表达式运算顺序从左到右优先级相同的双运算符表达式运算顺序从左到右优先级相同的双运算符表达式运

179、算顺序从左到右优先级相同的双运算符表达式运算顺序从左到右(2 2 2 2)相邻的单运算符优先顺序从右向左相邻的单运算符优先顺序从右向左相邻的单运算符优先顺序从右向左相邻的单运算符优先顺序从右向左(3 3 3 3)括号运算符优先级最高括号运算符优先级最高括号运算符优先级最高括号运算符优先级最高第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 34 4 4 4 ARMARMARMARM微处理器编程简介微处理器编程简介微处理器编程简介微处理器编程简介3.4.3 3.4.3 3.4.3 3.4.3 C C C C语言与汇编语言的混合编程语言与汇编语言的混合编程语言与

180、汇编语言的混合编程语言与汇编语言的混合编程C C C C语言与汇编语言的混合编程时语言与汇编语言的混合编程时语言与汇编语言的混合编程时语言与汇编语言的混合编程时如果汇编程序代码较少,可以选择嵌入式汇编方式如果汇编程序代码较少,可以选择嵌入式汇编方式如果汇编程序代码较少,可以选择嵌入式汇编方式如果汇编程序代码较少,可以选择嵌入式汇编方式否则将汇编程序以文件形式加入项目,通过否则将汇编程序以文件形式加入项目,通过否则将汇编程序以文件形式加入项目,通过否则将汇编程序以文件形式加入项目,通过ATPCSATPCSATPCSATPCS规定与规定与规定与规定与C C C C程序程序程序程序实现互相调用实现互

181、相调用实现互相调用实现互相调用ATPCSATPCSATPCSATPCS:子程序调用基本规则子程序调用基本规则子程序调用基本规则子程序调用基本规则包括:寄存器使用规则包括:寄存器使用规则包括:寄存器使用规则包括:寄存器使用规则堆栈使用规则堆栈使用规则堆栈使用规则堆栈使用规则参数传递规则参数传递规则参数传递规则参数传递规则第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 34 4 4 4 ARMARMARMARM微处理器编程简介微处理器编程简介微处理器编程简介微处理器编程简介3.4.3 3.4.3 3.4.3 3.4.3 C C C C语言与汇编语言的混合编程语

182、言与汇编语言的混合编程语言与汇编语言的混合编程语言与汇编语言的混合编程1.1.1.1.汇编语言程序结构汇编语言程序结构汇编语言程序结构汇编语言程序结构ARMARMARMARM(ThumbThumbThumbThumb)汇编语言程序设计中以汇编语言程序设计中以汇编语言程序设计中以汇编语言程序设计中以段段段段为单位为单位为单位为单位段分为:段分为:段分为:段分为:程序段:程序段:程序段:程序段:存放程序代码存放程序代码存放程序代码存放程序代码数据段:数据段:数据段:数据段:存放代码运行时用到的数据存放代码运行时用到的数据存放代码运行时用到的数据存放代码运行时用到的数据代码段代码段代码段代码段+ +

183、 + +数据段:形成可执行映像文件。数据段:形成可执行映像文件。数据段:形成可执行映像文件。数据段:形成可执行映像文件。可执行映像文件可执行映像文件可执行映像文件可执行映像文件构成:构成:构成:构成:11111 1 1 1个或个或个或个或N N N N个代码段(属性为只读)个代码段(属性为只读)个代码段(属性为只读)个代码段(属性为只读)22220 0 0 0个或个或个或个或N N N N个含初始数据的数据段(属性为读写)个含初始数据的数据段(属性为读写)个含初始数据的数据段(属性为读写)个含初始数据的数据段(属性为读写)33330 0 0 0个或个或个或个或N N N N个不含初始数据的数据

184、段(属性为读写)个不含初始数据的数据段(属性为读写)个不含初始数据的数据段(属性为读写)个不含初始数据的数据段(属性为读写)第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 34 4 4 4 ARMARMARMARM微处理器编程简介微处理器编程简介微处理器编程简介微处理器编程简介3.4.3 3.4.3 3.4.3 3.4.3 C C C C语言与汇编语言的混合编程语言与汇编语言的混合编程语言与汇编语言的混合编程语言与汇编语言的混合编程1.1.1.1.汇编语言程序结构汇编语言程序结构汇编语言程序结构汇编语言程序结构ARMARMARMARM(ThumbThumb

185、ThumbThumb)汇编语言源程序的基本结构汇编语言源程序的基本结构汇编语言源程序的基本结构汇编语言源程序的基本结构使用使用使用使用AREAAREAAREAAREA伪指令伪指令伪指令伪指令定义一个段定义一个段定义一个段定义一个段AREAAREAAREAAREAInitInitInitInit,CODECODECODECODE,READONLYREADONLYREADONLYREADONLY定义:定义:定义:定义:段名称段名称段名称段名称、类型类型类型类型、属性、属性、属性、属性ENTRYENTRYENTRYENTRY段起始段起始段起始段起始StartStartStartStart起始地址(标

186、号)起始地址(标号)起始地址(标号)起始地址(标号)LDRLDRLDRLDRR0R0R0R0,=0x3FF5000=0x3FF5000=0x3FF5000=0x3FF5000LDRLDRLDRLDRR1R1R1R1,0xFF0xFF0xFF0xFFENDENDENDEND段结束段结束段结束段结束第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 34 4 4 4 ARMARMARMARM微处理器编程简介微处理器编程简介微处理器编程简介微处理器编程简介3.4.3 3.4.3 3.4.3 3.4.3 C C C C语言与汇编语言的混合编程语言与汇编语言的混合编程语

187、言与汇编语言的混合编程语言与汇编语言的混合编程2.2.2.2.汇编语言与汇编语言与汇编语言与汇编语言与C C C C语言混合编程语言混合编程语言混合编程语言混合编程1 1 1 1)C C C C语言中嵌入语言中嵌入语言中嵌入语言中嵌入汇编语言汇编语言汇编语言汇编语言程序程序程序程序(用于使用少量汇编指令的情况)(用于使用少量汇编指令的情况)(用于使用少量汇编指令的情况)(用于使用少量汇编指令的情况)(1 1 1 1)内嵌汇编的语法)内嵌汇编的语法)内嵌汇编的语法)内嵌汇编的语法_asm_asm_asm_asm 指令指令指令指令 ;指令;指令;指令;指令 /*/*/*/*注释注释注释注释*/*/

188、*/*/ 指令指令指令指令 第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 34 4 4 4 ARMARMARMARM微处理器编程简介微处理器编程简介微处理器编程简介微处理器编程简介3.4.3 3.4.3 3.4.3 3.4.3 C C C C语言与汇编语言的混合编程语言与汇编语言的混合编程语言与汇编语言的混合编程语言与汇编语言的混合编程2.2.2.2.汇编语言与汇编语言与汇编语言与汇编语言与C C C C语言混合编程语言混合编程语言混合编程语言混合编程1 1 1 1)C C C C语言中嵌入汇编语言程序语言中嵌入汇编语言程序语言中嵌入汇编语言程序语言中嵌

189、入汇编语言程序(2 2 2 2)内嵌汇编的指令用法)内嵌汇编的指令用法)内嵌汇编的指令用法)内嵌汇编的指令用法1111操作数操作数操作数操作数包括:寄存器、常量(以表达式形式)包括:寄存器、常量(以表达式形式)包括:寄存器、常量(以表达式形式)包括:寄存器、常量(以表达式形式) 表达式类型:表达式类型:表达式类型:表达式类型:charcharcharchar、shortshortshortshort、intintintint2222对物理寄存器的限制对物理寄存器的限制对物理寄存器的限制对物理寄存器的限制不能直接向不能直接向不能直接向不能直接向PCPCPCPC赋值赋值赋值赋值不能使用过于复杂表达

190、式不能使用过于复杂表达式不能使用过于复杂表达式不能使用过于复杂表达式编译器使用:编译器使用:编译器使用:编译器使用:R12/R13R12/R13R12/R13R12/R13存放中间结果存放中间结果存放中间结果存放中间结果R0-R3/R12R0-R3/R12R0-R3/R12R0-R3/R12、R14R14R14R14用于子程序调用用于子程序调用用于子程序调用用于子程序调用第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 34 4 4 4 ARMARMARMARM微处理器编程简介微处理器编程简介微处理器编程简介微处理器编程简介3.4.3 3.4.3 3.4.3

191、 3.4.3 C C C C语言与汇编语言的混合编程语言与汇编语言的混合编程语言与汇编语言的混合编程语言与汇编语言的混合编程2.2.2.2.汇编语言与汇编语言与汇编语言与汇编语言与C C C C语言混合编程语言混合编程语言混合编程语言混合编程1 1 1 1)C C C C语言中嵌入汇编语言程序语言中嵌入汇编语言程序语言中嵌入汇编语言程序语言中嵌入汇编语言程序(2 2 2 2)内嵌汇编的指令用法)内嵌汇编的指令用法)内嵌汇编的指令用法)内嵌汇编的指令用法3333常量:内嵌汇编时可以省略常量:内嵌汇编时可以省略常量:内嵌汇编时可以省略常量:内嵌汇编时可以省略# # # #4444指令展开:如果包含

192、常量,内嵌汇编展开时可能包含几条指令指令展开:如果包含常量,内嵌汇编展开时可能包含几条指令指令展开:如果包含常量,内嵌汇编展开时可能包含几条指令指令展开:如果包含常量,内嵌汇编展开时可能包含几条指令5555标号:标号:标号:标号:C C C C程序中的标号可以被内嵌汇编指令使用程序中的标号可以被内嵌汇编指令使用程序中的标号可以被内嵌汇编指令使用程序中的标号可以被内嵌汇编指令使用 但是仅限于但是仅限于但是仅限于但是仅限于B B B B指令指令指令指令6666内存单元分配:内存单元分配:内存单元分配:内存单元分配: 内嵌汇编使用内存单元由内嵌汇编使用内存单元由内嵌汇编使用内存单元由内嵌汇编使用内存

193、单元由C C C C编译器统一分配编译器统一分配编译器统一分配编译器统一分配通过变量供内嵌汇编指令使用通过变量供内嵌汇编指令使用通过变量供内嵌汇编指令使用通过变量供内嵌汇编指令使用第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 34 4 4 4 ARMARMARMARM微处理器编程简介微处理器编程简介微处理器编程简介微处理器编程简介3.4.3 3.4.3 3.4.3 3.4.3 C C C C语言与汇编语言的混合编程语言与汇编语言的混合编程语言与汇编语言的混合编程语言与汇编语言的混合编程2.2.2.2.汇编语言与汇编语言与汇编语言与汇编语言与C C C C

194、语言混合编程语言混合编程语言混合编程语言混合编程1 1 1 1)C C C C语言中嵌入汇编语言程序语言中嵌入汇编语言程序语言中嵌入汇编语言程序语言中嵌入汇编语言程序(2 2 2 2)内嵌汇编的指令用法)内嵌汇编的指令用法)内嵌汇编的指令用法)内嵌汇编的指令用法7777SWISWISWISWI和和和和BLBLBLBL指令指令指令指令必须增加必须增加必须增加必须增加三个三个三个三个寄存器列表寄存器列表寄存器列表寄存器列表第第第第1 1 1 1个个个个寄存器列表:存放输入的参数寄存器列表:存放输入的参数寄存器列表:存放输入的参数寄存器列表:存放输入的参数第第第第2 2 2 2个个个个寄存器列表:存

195、放输出的结果寄存器列表:存放输出的结果寄存器列表:存放输出的结果寄存器列表:存放输出的结果第第第第3 3 3 3个个个个寄存器列表:作为子程序工作寄存器寄存器列表:作为子程序工作寄存器寄存器列表:作为子程序工作寄存器寄存器列表:作为子程序工作寄存器第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 34 4 4 4 ARMARMARMARM微处理器编程简介微处理器编程简介微处理器编程简介微处理器编程简介3.4.3 3.4.3 3.4.3 3.4.3 C C C C语言与汇编语言的混合编程语言与汇编语言的混合编程语言与汇编语言的混合编程语言与汇编语言的混合编程2

196、.2.2.2.汇编语言与汇编语言与汇编语言与汇编语言与C C C C语言混合编程语言混合编程语言混合编程语言混合编程1 1 1 1)C C C C语言中嵌入汇编语言程序语言中嵌入汇编语言程序语言中嵌入汇编语言程序语言中嵌入汇编语言程序(3 3 3 3)内嵌汇编与内嵌汇编与内嵌汇编与内嵌汇编与armasmarmasmarmasmarmasm汇编的区别汇编的区别汇编的区别汇编的区别内嵌式汇编:内嵌式汇编:内嵌式汇编:内嵌式汇编:1111不支持通过不支持通过不支持通过不支持通过”.”.”.”.”或或或或PCPCPCPC获得当前指令地址获得当前指令地址获得当前指令地址获得当前指令地址2222不支持不支

197、持不支持不支持LDR RnLDR RnLDR RnLDR Rn,=expr=expr=expr=expr伪指令(使用伪指令(使用伪指令(使用伪指令(使用MOV RnMOV RnMOV RnMOV Rn,exprexprexprexpr)3333不支持标号表达式不支持标号表达式不支持标号表达式不支持标号表达式4444不支持不支持不支持不支持ADRADRADRADR、ADRLADRLADRLADRL伪指令伪指令伪指令伪指令第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 34 4 4 4 ARMARMARMARM微处理器编程简介微处理器编程简介微处理器编程简介微

198、处理器编程简介3.4.3 3.4.3 3.4.3 3.4.3 C C C C语言与汇编语言的混合编程语言与汇编语言的混合编程语言与汇编语言的混合编程语言与汇编语言的混合编程2.2.2.2.汇编语言与汇编语言与汇编语言与汇编语言与C C C C语言混合编程语言混合编程语言混合编程语言混合编程1 1 1 1)C C C C语言中嵌入汇编语言程序语言中嵌入汇编语言程序语言中嵌入汇编语言程序语言中嵌入汇编语言程序(3 3 3 3)内嵌汇编与内嵌汇编与内嵌汇编与内嵌汇编与armasmarmasmarmasmarmasm汇编的区别汇编的区别汇编的区别汇编的区别内嵌式汇编:内嵌式汇编:内嵌式汇编:内嵌式汇编

199、:5555不支持不支持不支持不支持BXBXBXBX指令,不能向指令,不能向指令,不能向指令,不能向PCPCPCPC赋值赋值赋值赋值6666表示表示表示表示16161616进制数时采用进制数时采用进制数时采用进制数时采用0x0x0x0x前缀前缀前缀前缀7777使用使用使用使用8 8 8 8位常数更新位常数更新位常数更新位常数更新CPSRCPSRCPSRCPSR时对时对时对时对C C C C不起作用不起作用不起作用不起作用第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 34 4 4 4 ARMARMARMARM微处理器编程简介微处理器编程简介微处理器编程简介微

200、处理器编程简介3.4.3 3.4.3 3.4.3 3.4.3 C C C C语言与汇编语言的混合编程语言与汇编语言的混合编程语言与汇编语言的混合编程语言与汇编语言的混合编程2.2.2.2.汇编语言与汇编语言与汇编语言与汇编语言与C C C C语言混合编程语言混合编程语言混合编程语言混合编程2 2 2 2)在汇编程序和)在汇编程序和)在汇编程序和)在汇编程序和C C C C语言之间进行全局变量的互访语言之间进行全局变量的互访语言之间进行全局变量的互访语言之间进行全局变量的互访全局变量类型与汇编指令对应关系全局变量类型与汇编指令对应关系全局变量类型与汇编指令对应关系全局变量类型与汇编指令对应关系C

201、 C C C语言变量类型语言变量类型语言变量类型语言变量类型对应汇编指令类型对应汇编指令类型对应汇编指令类型对应汇编指令类型unsignred charunsignred charunsignred charunsignred char LDRB/STRB LDRB/STRB LDRB/STRB LDRB/STRBunsignredunsignredunsignredunsignred shortshortshortshort LDRH/STRH LDRH/STRH LDRH/STRH LDRH/STRHunsignred intunsignred intunsignred intunsign

202、red int LDR/STR LDR/STR LDR/STR LDR/STRcharcharcharchar LDRSB/STRSB LDRSB/STRSB LDRSB/STRSB LDRSB/STRSBshortshortshortshort LDRSH/STRSH LDRSH/STRSH LDRSH/STRSH LDRSH/STRSH第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 34 4 4 4 ARMARMARMARM微处理器编程简介微处理器编程简介微处理器编程简介微处理器编程简介3.4.3 3.4.3 3.4.3 3.4.3 C C C C语言

203、与汇编语言的混合编程语言与汇编语言的混合编程语言与汇编语言的混合编程语言与汇编语言的混合编程2.2.2.2.汇编语言与汇编语言与汇编语言与汇编语言与C C C C语言混合编程语言混合编程语言混合编程语言混合编程2 2 2 2)在汇编程序和)在汇编程序和)在汇编程序和)在汇编程序和C C C C语言之间进行全局变量的互访语言之间进行全局变量的互访语言之间进行全局变量的互访语言之间进行全局变量的互访举例:一汇编程序函数读取全局变量举例:一汇编程序函数读取全局变量举例:一汇编程序函数读取全局变量举例:一汇编程序函数读取全局变量globvalglobvalglobvalglobval,将其,将其,将其

204、,将其+1+1+1+1,然后写回,然后写回,然后写回,然后写回AREAAREAAREAAREAglobatsglobatsglobatsglobats,CODECODECODECODE,READONLYREADONLYREADONLYREADONLY段名、段类型、属性段名、段类型、属性段名、段类型、属性段名、段类型、属性EXPORT asmsubroutimeEXPORT asmsubroutimeEXPORT asmsubroutimeEXPORT asmsubroutime声明:供外部引用声明:供外部引用声明:供外部引用声明:供外部引用IMPORT glovbvarIMPORT glovb

205、varIMPORT glovbvarIMPORT glovbvar声明:外部变量声明:外部变量声明:外部变量声明:外部变量LDRLDRLDRLDRR1R1R1R1,=glovbvar=glovbvar=glovbvar=glovbvar装变量地址装变量地址装变量地址装变量地址LDRLDRLDRLDRR0R0R0R0,R1R1R1R1取变量数值取变量数值取变量数值取变量数值ADDADDADDADDR0R0R0R0,R0R0R0R0,#1#1#1#1变量变量变量变量+1+1+1+1STRSTRSTRSTRR0R0R0R0,R1R1R1R1存变量数值存变量数值存变量数值存变量数值MOVMOVMOVM

206、OVPCPCPCPC,LRLRLRLR返回调用程序返回调用程序返回调用程序返回调用程序ENDENDENDEND第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 34 4 4 4 ARMARMARMARM微处理器编程简介微处理器编程简介微处理器编程简介微处理器编程简介3.4.3 3.4.3 3.4.3 3.4.3 C C C C语言与汇编语言的混合编程语言与汇编语言的混合编程语言与汇编语言的混合编程语言与汇编语言的混合编程2.2.2.2.汇编语言与汇编语言与汇编语言与汇编语言与C C C C语言混合编程语言混合编程语言混合编程语言混合编程3 3 3 3)在汇编

207、程序和)在汇编程序和)在汇编程序和)在汇编程序和C C C C语言之间相互调用的语言之间相互调用的语言之间相互调用的语言之间相互调用的ATPCSATPCSATPCSATPCS规则规则规则规则(1 1 1 1)寄存器使用规则)寄存器使用规则)寄存器使用规则)寄存器使用规则1111R0-R3R0-R3R0-R3R0-R3:用于传递参数用于传递参数用于传递参数用于传递参数2222R4-R11R4-R11R4-R11R4-R11:用于保存局部变量用于保存局部变量用于保存局部变量用于保存局部变量3333R12R12R12R12:临时寄存器临时寄存器临时寄存器临时寄存器4444R13R13R13R13:堆

208、栈指针堆栈指针堆栈指针堆栈指针(SP)SP)SP)SP)5555R14R14R14R14:连接指针连接指针连接指针连接指针(LPLPLPLP)6666R15R15R15R15:程序指针程序指针程序指针程序指针(PCPCPCPC)第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 34 4 4 4 ARMARMARMARM微处理器编程简介微处理器编程简介微处理器编程简介微处理器编程简介3.4.3 3.4.3 3.4.3 3.4.3 C C C C语言与汇编语言的混合编程语言与汇编语言的混合编程语言与汇编语言的混合编程语言与汇编语言的混合编程2.2.2.2.汇编语

209、言与汇编语言与汇编语言与汇编语言与C C C C语言混合编程语言混合编程语言混合编程语言混合编程3 3 3 3)在汇编程序和)在汇编程序和)在汇编程序和)在汇编程序和C C C C语言之间相互调用的语言之间相互调用的语言之间相互调用的语言之间相互调用的ATPCSATPCSATPCSATPCS规则规则规则规则(2 2 2 2)堆栈使用规则)堆栈使用规则)堆栈使用规则)堆栈使用规则1111堆栈类型:堆栈类型:堆栈类型:堆栈类型:FDFDFDFD型(满递减)型(满递减)型(满递减)型(满递减)2222数据类型:数据类型:数据类型:数据类型:8 8 8 8字节对齐字节对齐字节对齐字节对齐 使用伪指令说

210、明使用伪指令说明使用伪指令说明使用伪指令说明第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 34 4 4 4 ARMARMARMARM微处理器编程简介微处理器编程简介微处理器编程简介微处理器编程简介3.4.3 3.4.3 3.4.3 3.4.3 C C C C语言与汇编语言的混合编程语言与汇编语言的混合编程语言与汇编语言的混合编程语言与汇编语言的混合编程2.2.2.2.汇编语言与汇编语言与汇编语言与汇编语言与C C C C语言混合编程语言混合编程语言混合编程语言混合编程3 3 3 3)在汇编程序和)在汇编程序和)在汇编程序和)在汇编程序和C C C C语言

211、之间相互调用的语言之间相互调用的语言之间相互调用的语言之间相互调用的ATPCSATPCSATPCSATPCS规则规则规则规则(3 3 3 3)参数传递规则)参数传递规则)参数传递规则)参数传递规则参数数目参数数目参数数目参数数目小于等于小于等于小于等于小于等于4 4 4 4时:时:时:时: 使用使用使用使用R0-R3R0-R3R0-R3R0-R3参数数目参数数目参数数目参数数目大于大于大于大于4 4 4 4时:时:时:时:使用堆栈使用堆栈使用堆栈使用堆栈浮点参数传递规则:浮点参数传递规则:浮点参数传递规则:浮点参数传递规则:1111各个浮点数按顺序处理各个浮点数按顺序处理各个浮点数按顺序处理各

212、个浮点数按顺序处理2222为浮点数分配浮点寄存器为浮点数分配浮点寄存器为浮点数分配浮点寄存器为浮点数分配浮点寄存器FPFPFPFP3333FPFPFPFP分配方法:满足浮点数需要、编号最小的一组分配方法:满足浮点数需要、编号最小的一组分配方法:满足浮点数需要、编号最小的一组分配方法:满足浮点数需要、编号最小的一组FPFPFPFP第一个第一个第一个第一个 整数参数通过整数参数通过整数参数通过整数参数通过R0-R3R0-R3R0-R3R0-R3传递。其余通过堆栈。传递。其余通过堆栈。传递。其余通过堆栈。传递。其余通过堆栈。第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3

213、 3 3 34 4 4 4 ARMARMARMARM微处理器编程简介微处理器编程简介微处理器编程简介微处理器编程简介3.4.3 3.4.3 3.4.3 3.4.3 C C C C语言与汇编语言的混合编程语言与汇编语言的混合编程语言与汇编语言的混合编程语言与汇编语言的混合编程2.2.2.2.汇编语言与汇编语言与汇编语言与汇编语言与C C C C语言混合编程语言混合编程语言混合编程语言混合编程3 3 3 3)在汇编程序和)在汇编程序和)在汇编程序和)在汇编程序和C C C C语言之间相互调用的语言之间相互调用的语言之间相互调用的语言之间相互调用的ATPCSATPCSATPCSATPCS规则规则规则

214、规则(3 3 3 3)参数传递规则)参数传递规则)参数传递规则)参数传递规则子程序返回规则:子程序返回规则:子程序返回规则:子程序返回规则:1111结果为结果为结果为结果为32323232位整数时:通过位整数时:通过位整数时:通过位整数时:通过R0R0R0R0返回返回返回返回2222结果为结果为结果为结果为64646464位整数时:通过位整数时:通过位整数时:通过位整数时:通过R0R0R0R0、R1R1R1R1返回返回返回返回3333结果为浮点数时:通过浮点预算部件寄存器结果为浮点数时:通过浮点预算部件寄存器结果为浮点数时:通过浮点预算部件寄存器结果为浮点数时:通过浮点预算部件寄存器f0f0f

215、0f0、d0d0d0d0、s0s0s0s0 4444结果为复合型浮点数时:通过结果为复合型浮点数时:通过结果为复合型浮点数时:通过结果为复合型浮点数时:通过f0-fnf0-fnf0-fnf0-fn、d0-dnd0-dnd0-dnd0-dn返回返回返回返回5555位数更多浮点数:通过内存返回位数更多浮点数:通过内存返回位数更多浮点数:通过内存返回位数更多浮点数:通过内存返回第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 34 4 4 4 ARMARMARMARM微处理器编程简介微处理器编程简介微处理器编程简介微处理器编程简介3.4.3 3.4.3 3.4.3

216、 3.4.3 C C C C语言与汇编语言的混合编程语言与汇编语言的混合编程语言与汇编语言的混合编程语言与汇编语言的混合编程2.2.2.2.汇编语言与汇编语言与汇编语言与汇编语言与C C C C语言混合编程语言混合编程语言混合编程语言混合编程4 4 4 4)C C C C语言程序调用汇编语言程序语言程序调用汇编语言程序语言程序调用汇编语言程序语言程序调用汇编语言程序1111汇编子程序使用汇编子程序使用汇编子程序使用汇编子程序使用EXPORTEXPORTEXPORTEXPORT伪指令声明本子程序为外部公用伪指令声明本子程序为外部公用伪指令声明本子程序为外部公用伪指令声明本子程序为外部公用2222

217、在在在在C C C C语言中使用语言中使用语言中使用语言中使用ExternExternExternExtern关键字声明所调用子程序为外部函数关键字声明所调用子程序为外部函数关键字声明所调用子程序为外部函数关键字声明所调用子程序为外部函数第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 34 4 4 4 ARMARMARMARM微处理器编程简介微处理器编程简介微处理器编程简介微处理器编程简介3.4.3 3.4.3 3.4.3 3.4.3 C C C C语言与汇编语言的混合编程语言与汇编语言的混合编程语言与汇编语言的混合编程语言与汇编语言的混合编程2.2.2.

218、2.汇编语言与汇编语言与汇编语言与汇编语言与C C C C语言混合编程语言混合编程语言混合编程语言混合编程5 5 5 5)汇编语言程序调用)汇编语言程序调用)汇编语言程序调用)汇编语言程序调用C C C C语言程序语言程序语言程序语言程序1111遵循遵循遵循遵循ATPCSATPCSATPCSATPCS原则,保证程序调用时参数传递正确。原则,保证程序调用时参数传递正确。原则,保证程序调用时参数传递正确。原则,保证程序调用时参数传递正确。2222在在在在汇编语言汇编语言汇编语言汇编语言中使用中使用中使用中使用IMPORTIMPORTIMPORTIMPORT伪指令声明所调用伪指令声明所调用伪指令声明

219、所调用伪指令声明所调用C C C C程序函数。程序函数。程序函数。程序函数。3333设置正确的入口参数,使用设置正确的入口参数,使用设置正确的入口参数,使用设置正确的入口参数,使用BLBLBLBL指令调用。指令调用。指令调用。指令调用。第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 35 5 5 5 ARMARMARMARM微处理器初始化分析微处理器初始化分析微处理器初始化分析微处理器初始化分析3.5.1 3.5.1 3.5.1 3.5.1 嵌入式系统初始化流程嵌入式系统初始化流程嵌入式系统初始化流程嵌入式系统初始化流程1.1.1.1.一般一般一般一般PC

220、PCPCPC系统的初始化过程系统的初始化过程系统的初始化过程系统的初始化过程在在在在X86X86X86X86类体系结构,复位后首先进入类体系结构,复位后首先进入类体系结构,复位后首先进入类体系结构,复位后首先进入BIOSBIOSBIOSBIOS,然后转入,然后转入,然后转入,然后转入Boot LoaderBoot LoaderBoot LoaderBoot Loader由由由由Boot LoaderBoot LoaderBoot LoaderBoot Loader引导装入操作系统,最后转入操作系统管理引导装入操作系统,最后转入操作系统管理引导装入操作系统,最后转入操作系统管理引导装入操作系统,

221、最后转入操作系统管理Boot LoaderBoot LoaderBoot LoaderBoot Loader:在在在在DOS/WindowsDOS/WindowsDOS/WindowsDOS/Windows系统:存放于硬盘主引导区系统:存放于硬盘主引导区系统:存放于硬盘主引导区系统:存放于硬盘主引导区MBRMBRMBRMBR 在在在在LinuxLinuxLinuxLinux系统:存放于所驻留磁盘的第一个扇区系统:存放于所驻留磁盘的第一个扇区系统:存放于所驻留磁盘的第一个扇区系统:存放于所驻留磁盘的第一个扇区第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 3

222、5 5 5 5 ARMARMARMARM微处理器初始化分析微处理器初始化分析微处理器初始化分析微处理器初始化分析3.5.1 3.5.1 3.5.1 3.5.1 嵌入式系统初始化流程嵌入式系统初始化流程嵌入式系统初始化流程嵌入式系统初始化流程2.2.2.2.嵌入式系统的初始化过程嵌入式系统的初始化过程嵌入式系统的初始化过程嵌入式系统的初始化过程特点:特点:特点:特点:1111没有专门的没有专门的没有专门的没有专门的BIOSBIOSBIOSBIOS(与(与(与(与Boot LoaderBoot LoaderBoot LoaderBoot Loader结合在一起)结合在一起)结合在一起)结合在一起)

223、2222在在在在ARMARMARMARM嵌入式系统中通常从嵌入式系统中通常从嵌入式系统中通常从嵌入式系统中通常从0x000000000x000000000x000000000x00000000开始执行开始执行开始执行开始执行3Boot Loader3Boot Loader3Boot Loader3Boot Loader主要工作:初始化最基本的硬件设备主要工作:初始化最基本的硬件设备主要工作:初始化最基本的硬件设备主要工作:初始化最基本的硬件设备建立内存空间映射图(分配存储器)建立内存空间映射图(分配存储器)建立内存空间映射图(分配存储器)建立内存空间映射图(分配存储器)第三章第三章 ARMAR

224、M微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 35 5 5 5 ARMARMARMARM微处理器初始化分析微处理器初始化分析微处理器初始化分析微处理器初始化分析3.5.1 3.5.1 3.5.1 3.5.1 嵌入式系统初始化流程嵌入式系统初始化流程嵌入式系统初始化流程嵌入式系统初始化流程2.2.2.2.嵌入式系统的初始化过程嵌入式系统的初始化过程嵌入式系统的初始化过程嵌入式系统的初始化过程Boot LoaderBoot LoaderBoot LoaderBoot Loader 操作方式:操作方式:操作方式:操作方式:1111启动加载:启动加载:启动加载:启动加载:主要操作方式主

225、要操作方式主要操作方式主要操作方式Boot LoaderBoot LoaderBoot LoaderBoot Loader预先存放在目标机中非易失性存储器预先存放在目标机中非易失性存储器预先存放在目标机中非易失性存储器预先存放在目标机中非易失性存储器(FlashFlashFlashFlash)中中中中启动后将操作系统加载到启动后将操作系统加载到启动后将操作系统加载到启动后将操作系统加载到RAMRAMRAMRAM中。中。中。中。2222下载:下载:下载:下载: 初始化、修改、刷新时使用初始化、修改、刷新时使用初始化、修改、刷新时使用初始化、修改、刷新时使用主机将主机将主机将主机将Boot Loa

226、derBoot LoaderBoot LoaderBoot Loader通过串口、网络下载到目标机通过串口、网络下载到目标机通过串口、网络下载到目标机通过串口、网络下载到目标机RAMRAMRAMRAM中,然后一中,然后一中,然后一中,然后一般要将其固化到目标机的般要将其固化到目标机的般要将其固化到目标机的般要将其固化到目标机的FlashFlashFlashFlash中中中中第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 35 5 5 5 ARMARMARMARM微处理器初始化分析微处理器初始化分析微处理器初始化分析微处理器初始化分析3.5.1 3.5.1

227、3.5.1 3.5.1 嵌入式系统初始化流程嵌入式系统初始化流程嵌入式系统初始化流程嵌入式系统初始化流程2.2.2.2.嵌入式系统的初始化过程嵌入式系统的初始化过程嵌入式系统的初始化过程嵌入式系统的初始化过程Boot LoaderBoot LoaderBoot LoaderBoot Loader 组成:组成:组成:组成:1111第第第第1 1 1 1部分:部分:部分:部分:包括:包括:包括:包括:基本硬件初始化基本硬件初始化基本硬件初始化基本硬件初始化异常中断处理(中断程序、中断地址)异常中断处理(中断程序、中断地址)异常中断处理(中断程序、中断地址)异常中断处理(中断程序、中断地址)引导引导

228、引导引导Boot LoaderBoot LoaderBoot LoaderBoot Loader 第二部分代码、数据进入第二部分代码、数据进入第二部分代码、数据进入第二部分代码、数据进入RAMRAMRAMRAM2222第第第第2 2 2 2部分:部分:部分:部分:Boot LoaderBoot LoaderBoot LoaderBoot Loader 功能的主要部分功能的主要部分功能的主要部分功能的主要部分包括:包括:包括:包括:初始化硬件配置初始化硬件配置初始化硬件配置初始化硬件配置加载操作系统加载操作系统加载操作系统加载操作系统第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系

229、结构与指令集3 3 3 35 5 5 5 ARMARMARMARM微处理器初始化分析微处理器初始化分析微处理器初始化分析微处理器初始化分析3.5.1 3.5.1 3.5.1 3.5.1 嵌入式系统初始化流程嵌入式系统初始化流程嵌入式系统初始化流程嵌入式系统初始化流程2.2.2.2.嵌入式系统的初始化过程嵌入式系统的初始化过程嵌入式系统的初始化过程嵌入式系统的初始化过程Boot LoaderBoot LoaderBoot LoaderBoot Loader 启动过程:启动过程:启动过程:启动过程:1111第一阶段任务第一阶段任务第一阶段任务第一阶段任务:包括:基本硬件初始化包括:基本硬件初始化包

230、括:基本硬件初始化包括:基本硬件初始化为加载操作系统准备为加载操作系统准备为加载操作系统准备为加载操作系统准备RAMRAMRAMRAM空间空间空间空间复制复制复制复制Boot LoaderBoot LoaderBoot LoaderBoot Loader 第二部分第二部分第二部分第二部分代码、数据进入代码、数据进入代码、数据进入代码、数据进入RAMRAMRAMRAM设置堆栈设置堆栈设置堆栈设置堆栈跳转到跳转到跳转到跳转到第二阶段第二阶段第二阶段第二阶段的的的的C C C C程序入口程序入口程序入口程序入口第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 35

231、 5 5 5 ARMARMARMARM微处理器初始化分析微处理器初始化分析微处理器初始化分析微处理器初始化分析3.5.1 3.5.1 3.5.1 3.5.1 嵌入式系统初始化流程嵌入式系统初始化流程嵌入式系统初始化流程嵌入式系统初始化流程2.2.2.2.嵌入式系统的初始化过程嵌入式系统的初始化过程嵌入式系统的初始化过程嵌入式系统的初始化过程Boot LoaderBoot LoaderBoot LoaderBoot Loader 启动过程:启动过程:启动过程:启动过程:2222第二阶段任务:第二阶段任务:第二阶段任务:第二阶段任务:包括:本阶段使用的硬件初始化包括:本阶段使用的硬件初始化包括:本

232、阶段使用的硬件初始化包括:本阶段使用的硬件初始化检测检测检测检测系统内存映射系统内存映射系统内存映射系统内存映射复制复制复制复制内核映射内核映射内核映射内核映射和和和和根文件系统根文件系统根文件系统根文件系统从从从从FlashFlashFlashFlash进入进入进入进入RAMRAMRAMRAM设置设置设置设置内核内核内核内核所需启动参数所需启动参数所需启动参数所需启动参数调用调用调用调用内核内核内核内核(进入操作系统管理状态)(进入操作系统管理状态)(进入操作系统管理状态)(进入操作系统管理状态)第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 35 5

233、5 5 ARMARMARMARM微处理器初始化分析微处理器初始化分析微处理器初始化分析微处理器初始化分析3.5.2 3.5.2 3.5.2 3.5.2 ARMARMARMARM嵌入式处理器的初始化分析嵌入式处理器的初始化分析嵌入式处理器的初始化分析嵌入式处理器的初始化分析1111设置入口指针:设置入口指针:设置入口指针:设置入口指针:AREA AREA AREA AREA bootbootbootboot,CODE,CODE,CODE,CODE,READONLYREADONLYREADONLYREADONLY ;定义一个定义一个定义一个定义一个bootbootbootboot段、代码段、只读属

234、性段、代码段、只读属性段、代码段、只读属性段、代码段、只读属性ENTRYENTRYENTRYENTRY;入口点入口点入口点入口点第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 35 5 5 5 ARMARMARMARM微处理器初始化分析微处理器初始化分析微处理器初始化分析微处理器初始化分析3.5.2 3.5.2 3.5.2 3.5.2 ARMARMARMARM嵌入式处理器的初始化分析嵌入式处理器的初始化分析嵌入式处理器的初始化分析嵌入式处理器的初始化分析2222设置中断向量:设置中断向量:设置中断向量:设置中断向量: (从(从(从(从0x000000000

235、x000000000x000000000x00000000连续的连续的连续的连续的8 8 8 8 X X X X 4 4 4 4字节空间)字节空间)字节空间)字节空间)中断向量表的程序通常如下中断向量表的程序通常如下中断向量表的程序通常如下中断向量表的程序通常如下B B B B Reset_HandlerReset_HandlerReset_HandlerReset_Handler;复位向量;复位向量;复位向量;复位向量B B B B Undef_HandlerUndef_HandlerUndef_HandlerUndef_Handler;未定义向量;未定义向量;未定义向量;未定义向量B B

236、B B SWI_HandlerSWI_HandlerSWI_HandlerSWI_Handler;软件中断向量;软件中断向量;软件中断向量;软件中断向量B B B B PreAbort_HandlerPreAbort_HandlerPreAbort_HandlerPreAbort_Handler;预取指令中止向量;预取指令中止向量;预取指令中止向量;预取指令中止向量B B B B DataAbort_HandlerDataAbort_HandlerDataAbort_HandlerDataAbort_Handler;取数据中止向量;取数据中止向量;取数据中止向量;取数据中止向量B B B B;

237、保留;保留;保留;保留B B B B IRQ_HandlerIRQ_HandlerIRQ_HandlerIRQ_Handler;中断向量;中断向量;中断向量;中断向量B B B B FIQ_HandlerFIQ_HandlerFIQ_HandlerFIQ_Handler;快中断向量;快中断向量;快中断向量;快中断向量第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 35 5 5 5 ARMARMARMARM微处理器初始化分析微处理器初始化分析微处理器初始化分析微处理器初始化分析3.5.2 3.5.2 3.5.2 3.5.2 ARMARMARMARM嵌入式处理

238、器的初始化分析嵌入式处理器的初始化分析嵌入式处理器的初始化分析嵌入式处理器的初始化分析3333初始化存储器系统初始化存储器系统初始化存储器系统初始化存储器系统静态存储器系统:静态存储器系统:静态存储器系统:静态存储器系统:Flash/Flash/Flash/Flash/SRAMSRAMSRAMSRAM;可以同一个存储器接口;可以同一个存储器接口;可以同一个存储器接口;可以同一个存储器接口动态存储器系统:动态存储器系统:动态存储器系统:动态存储器系统:DRAMDRAMDRAMDRAM;涉及地址复用、动态刷新;涉及地址复用、动态刷新;涉及地址复用、动态刷新;涉及地址复用、动态刷新存储器初始化目的:

239、获得最佳的时序配合存储器初始化目的:获得最佳的时序配合存储器初始化目的:获得最佳的时序配合存储器初始化目的:获得最佳的时序配合 第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 35 5 5 5 ARMARMARMARM微处理器初始化分析微处理器初始化分析微处理器初始化分析微处理器初始化分析3.5.2 3.5.2 3.5.2 3.5.2 ARMARMARMARM嵌入式处理器的初始化分析嵌入式处理器的初始化分析嵌入式处理器的初始化分析嵌入式处理器的初始化分析4444REMAPREMAPREMAPREMAP部分(地址映射)部分(地址映射)部分(地址映射)部分(地

240、址映射)复位后操作:复位后操作:复位后操作:复位后操作:ARMARMARMARM复位后首先执行复位后首先执行复位后首先执行复位后首先执行Flash/ROMFlash/ROMFlash/ROMFlash/ROM中的程序。中的程序。中的程序。中的程序。复位程序入口、各类异常入口都指向复位程序入口、各类异常入口都指向复位程序入口、各类异常入口都指向复位程序入口、各类异常入口都指向Flash/ROMFlash/ROMFlash/ROMFlash/ROM。程序代码也存放于程序代码也存放于程序代码也存放于程序代码也存放于Flash/ROMFlash/ROMFlash/ROMFlash/ROM之中。之中。之

241、中。之中。问题问题问题问题: : : :但是所有程序一直在但是所有程序一直在但是所有程序一直在但是所有程序一直在Flash/ROMFlash/ROMFlash/ROMFlash/ROM中运行会影响速度。中运行会影响速度。中运行会影响速度。中运行会影响速度。解决办法:解决办法:解决办法:解决办法:将指令代码存入将指令代码存入将指令代码存入将指令代码存入RAMRAMRAMRAM中,地址指针也开始指向中,地址指针也开始指向中,地址指针也开始指向中,地址指针也开始指向RAMRAMRAMRAM第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 35 5 5 5 ARMA

242、RMARMARM微处理器初始化分析微处理器初始化分析微处理器初始化分析微处理器初始化分析3.5.2 3.5.2 3.5.2 3.5.2 ARMARMARMARM嵌入式处理器的初始化分析嵌入式处理器的初始化分析嵌入式处理器的初始化分析嵌入式处理器的初始化分析B Reset_HanderB Reset_Hander0x00000x00000x01000x01000x02000x02000x00000x0000Reset_Reset_HanderHanderBoot CodeBoot Code REMAP REMAPB Reset_HanderB Reset_Hander0x02000x0200Bo

243、ot CodeBoot Code REMAP REMAP第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 35 5 5 5 ARMARMARMARM微处理器初始化分析微处理器初始化分析微处理器初始化分析微处理器初始化分析3.5.2 3.5.2 3.5.2 3.5.2 ARMARMARMARM嵌入式处理器的初始化分析嵌入式处理器的初始化分析嵌入式处理器的初始化分析嵌入式处理器的初始化分析5555初始化堆栈初始化堆栈初始化堆栈初始化堆栈进入不同处理模式需要使用不同的堆栈指针进入不同处理模式需要使用不同的堆栈指针进入不同处理模式需要使用不同的堆栈指针进入不同处理模

244、式需要使用不同的堆栈指针MRSMRSMRSMRSR0R0R0R0,CPSRCPSRCPSRCPSR;(;(;(;(CPSRCPSRCPSRCPSR)(R0R0R0R0)BICBICBICBICR0R0R0R0,R0R0R0R0,#MODEMASK#MODEMASK#MODEMASK#MODEMASK;(;(;(;(R0R0R0R0)(R0R0R0R0) #MODEMASK#MODEMASK#MODEMASK#MODEMASKORRORRORRORRR1R1R1R1,R0R0R0R0,#IRQMODE#IRQMODE#IRQMODE#IRQMODE;(;(;(;(R1R1R1R1)(R0R0R0

245、R0) #IRQMASK#IRQMASK#IRQMASK#IRQMASKMSRMSRMSRMSRCPSR_CPSR_CPSR_CPSR_cxsfcxsfcxsfcxsf,R1R1R1R1;(;(;(;(CPSRCPSRCPSRCPSR)(R1R1R1R1) c c c c:CPSRCPSRCPSRCPSR中的中的中的中的controlcontrolcontrolcontrol field field field field (CPSR7:0CPSR7:0CPSR7:0CPSR7:0)x x x x:CPSRCPSRCPSRCPSR中的中的中的中的extend extend extend ext

246、end fieldfieldfieldfield (CPSR15:8CPSR15:8CPSR15:8CPSR15:8) s s s s:CPSRCPSRCPSRCPSR中的中的中的中的statusstatusstatusstatus field field field field (CPSR23:16CPSR23:16CPSR23:16CPSR23:16)f f f f:CPSRCPSRCPSRCPSR中的中的中的中的flagflagflagflag field field field field (CPSR31:24CPSR31:24CPSR31:24CPSR31:24)LDRLDRLDRL

247、DRSPSPSPSP,=IRQStack=IRQStack=IRQStack=IRQStack;装入装入装入装入IRQIRQIRQIRQ堆栈指针堆栈指针堆栈指针堆栈指针第三章第三章 ARMARM微处理器体系结构与指令集微处理器体系结构与指令集3 3 3 35 5 5 5 ARMARMARMARM微处理器初始化分析微处理器初始化分析微处理器初始化分析微处理器初始化分析3.5.2 3.5.2 3.5.2 3.5.2 ARMARMARMARM嵌入式处理器的初始化分析嵌入式处理器的初始化分析嵌入式处理器的初始化分析嵌入式处理器的初始化分析6666初始化必要的初始化必要的初始化必要的初始化必要的I/OI/OI/OI/O某些某些某些某些I/OI/OI/OI/O口设置成输出后不允许处于随机状态口设置成输出后不允许处于随机状态口设置成输出后不允许处于随机状态口设置成输出后不允许处于随机状态7777初始化初始化初始化初始化C C C C语言必要的空间语言必要的空间语言必要的空间语言必要的空间 RO RO(代码及只读数据)(代码及只读数据)RWRW(可读写数据)(可读写数据)ZIZI(零初始化读写数据)(零初始化读写数据)未初始化的全局变量未初始化的全局变量带初值的全局变量带初值的全局变量代码段(可选在代码段(可选在Flash/RAMFlash/RAM执行)执行)88调入调入C C语言程序语言程序

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

最新文档


当前位置:首页 > 办公文档 > 工作计划

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