吴贵芳 easyfancy@ qq:6974784电子信息工程学院
1Henan University of Sci. & Tech.
本资料来源
吴贵芳 easyfancy@ qq:6974784电子信息工程学院
2Henan University of Sci. & Tech.
第2章 ARM7/ARM9体系
结构
主讲人:吴贵芳
2022/5/2
吴贵芳 easyfancy@ qq:6974784电子信息工程学院
3Henan University of Sci. & Tech.
简介
的模块、内
核和功能框图
处理器状态
处理器模式
主要内容
内部寄存器
7.当前程序状态寄存
器
体系的异常、
中断及其向量表
体系的存储系
统
吴贵芳 easyfancy@ qq:6974784电子信息工程学院
4Henan University of Sci. & Tech.
ARM简介
• ARM公司简介
ARM是Advanced RISC Machines的缩写,它是
一家微处理器行业的知名企业,该企业设计了大量
高性能、廉价、耗能低的RISC (精简指令集)处
理器。
公司的特点是只设计芯片,而不生
产。它将技术授权给世界上许多著名的半导体、软
件和OEM厂商,并提供服务。
吴贵芳 easyfancy@ qq:6974784电子信息工程学院
5Henan University of Sci. & Tech.
ARM简介
• ARM公司简介
将技术授权给
其它芯片厂商
形成各具特色
的ARM芯片
. . .
吴贵芳 easyfancy@ qq:6974784电子信息工程学院
6Henan University of Sci. & Tech.
ARM简介
• RISC结构特性
RISC是精简指令集计算机的缩写,其目标是设计出
在高时钟频率下单周期执行,简单而有效的指令集。
ARM内核采用RISC体系结构,因此具有RISC的结构特
点:
具有大量的通用存储器;
独特的装载/保存(load-store)结构;
简单的寻址模式;
统一和固定长度的指令格式。
吴贵芳 easyfancy@ qq:6974784电子信息工程学院
7Henan University of Sci. & Tech.
ARM简介
为了使ARM能够更好地满足嵌入式应用的需要,
ARM体系结构还有以下特点:
每条数据处理指令可同时包含算术逻辑单元(ALU)
的运算和移位处理,实现ALU和移位器的最大利用;
使用地址自增和自减的寻址方式优化程序循环;
装载/保存指令对数据的批量传输,实现最大数据吞
吐量;
大多数指令的条件执行,实现最快速的代码执行。
• ARM体系结构
吴贵芳 easyfancy@ qq:6974784电子信息工程学院
8Henan University of Sci. & Tech.
ARM简介
• 常用ARM处理器系列
ARM公司开发了很多系列的ARM处理器核,目前
最新的系列是Cortex,而ARM6核以及更早的系列已经
很罕见了。当前应用比较多的ARM处理器核系列有:
ARM7 ARM9 ARM10E
Xscale
ARM11 CortexARM9E
吴贵芳 easyfancy@ qq:6974784电子信息工程学院
9Henan University of Sci. & Tech.
版本 ARM处理器
系列
特点
ARMv1 ARM1 该版体系结构只在原型机ARM1出现过,
没有用于商业产品。基本性能:
• 基本的数据处理指令(无乘法)
• 26位寻址
ARMv2 ARM2和
ARM3
该版体系结构对ARMv1版进行了扩展,版
本ARMv2a是v2版的变种,ARM3芯片采用
了ARMv2a。ARMv2版增加了以下功能:
• 32位乘法和乘加指令
• 支持32位协处理器操作指令
• 快速中断模式
ARM体系结构版本及特点
吴贵芳 easyfancy@ qq:6974784电子信息工程学院
10Henan University of Sci. & Tech.
ARMv3
ARMv3
M
ARM6、
ARM7DI、
ARM7M
ARMv3版体系结构对ARM体系结构作了
较大的改动:
• 寻址空间增至32位(4GB)
• 独立的当前程序状态寄存器CPSR和程序
状态保存寄存器SPSR,保存程序异常中断
时的程序状态,以便于对异常的处
• 增加了异常中断(Abort)和未定义两种
处理器模式
• 增加了MMU支持
• ARMv3M增加了有符号和无符号长乘法
指令
ARMv4
ARMv4
T
StrongARM
、
ARM9TDMI
、
ARM9T
ARMv4版体系结构是目前应用最广的
ARM体系结构,在v3版上作了进一步扩充,
指令集中增加了以下功能:
• 增加了系统模式
• 增加了16位Thumb指令集
• 完善了软件中断SWI指令的功能
• 不再支持26位寻址模式
吴贵芳 easyfancy@ qq:6974784电子信息工程学院
11Henan University of Sci. & Tech.
ARMv5
TE
ARMv5
TEJ
ARM9E、
ARM10E、
Xscale、
ARM7EJ、
ARM926EJ
ARMv5版体系结构在ARMv4版基础上增
加了一些新的指令,包括:
• 增加ARM与Thumb状态之间切换的指令
• 增强乘法指令和快速乘累加指令
• 增加了数字信号处理指令(ARMv5TE版)
• 增加了Java加速功能(ARMv5TEJ版)
ARMv6 ARM11 ARMv6版体系结构是2001年发布的,首先
在ARM11处理器中使用。此体系结构在
ARMv5版基础上增加了以下功能:
• Thumb-2 增强代码密度
• SIMD 增强媒体和数字处理功能
• TrustZone 提供增强的安全性能
• IEM 提供增强的功耗管理功能
吴贵芳 easyfancy@ qq:6974784电子信息工程学院
12Henan University of Sci. & Tech.
AR
Mv7
Cortex系
列
ARMv7版体系结构定义了3
种不同的微处理器系列:
• A系列为面向应用的微处理
器核,支持复杂操作系统和
用户应用
• R系列为深度嵌入的微处理
器核,针对实时系统应用
• M系列为微控制核,针对
成本敏感的嵌入式控制应用
吴贵芳 easyfancy@ qq:6974784电子信息工程学院
13Henan University of Sci. & Tech.
内核 特点
M4KTM系列 针对多CPU集成的SOC应用领域为下一代消
费类产品、下一代网络和宽带产品
M4KT M系列4KpTM、
4KcTM内核
针对SOC系统优化,其内存、指令缓存和数
据缓存都可以根据具体应用调整大小
M4KTM系列4KEpTM、
4KEmTM和4KEcTM内
核
与4KTM系列类似,但能提供更高性能,在同
样时钟频率下指令执行周期更短
4KSTM系列4KScTM和
4KSdTM内核
针对数据通信的应用。其特点是采用了
SmartMIPSTM结构,拥有反黑客的特性,可
以让数据加密更加快速,在网络处理、智能
卡、机顶盒等方面有广泛应用
MIPS 32位处理器内核系列和特点
吴贵芳 easyfancy@ qq:6974784电子信息工程学院
14Henan University of Sci. & Tech.
Pro SeriesTM系
列M4K ProTM
、4KE ProTM、
4KEm ProTM、
4KEc Proms和
4KSd ProTM内
核
该系列内核允许SOC的设计者
创造自己的CorExtendTM扩展
指令集。这样可以根据具体应
用设计出性能更好,效率更高
的产品
24KTM系列 针对图形、JAVA应用,包含
了最快的浮点乘法器,也支持
CorExtendTM扩展指令集,是
数字电视、机顶盒和DVD等
多媒体应用的理想选择
吴贵芳 easyfancy@ qq:6974784电子信息工程学院
15Henan University of Sci. & Tech.
ARM简介
• ARM Cortex系列简介
基于ARMv7版本的ARM Cortex系列产品由A、R、
M三个系列组成,具体分类延续了一直以来ARM面向具
体应用设计CPU的思路。
ARM Cortex
A应用处理器(Application Processor )系列
R实时控制处理(Real Time Control )系列
M微控制器(Micro Controller )系列
吴贵芳 easyfancy@ qq:6974784电子信息工程学院
16Henan University of Sci. & Tech.
ARM简介
• CortexTM-M3处理器简介
该处理器是首款基于ARMv7-M架构的处理器,采
用了纯Thumb2指令的执行方式,具有极高的运算能力
和中断相应能力。
Cortex-M3主要应用于汽车车身系统,工业控制系
统和无线网络等对功耗和成本敏感的嵌入式应用领域。
目前最便宜的基于该内核的ARM单片机售价为1美元。
吴贵芳 easyfancy@ qq:6974784电子信息工程学院
17Henan University of Sci. & Tech.
ARM简介
• CortexTM-R4处理器简介
该处理器是首款基于ARMv7架构的高级嵌入式处理
器,其主要目标为产量巨大的高级嵌入式应用系统,
如硬盘,喷墨式打印机,以及汽车安全系统等等。
• CortexTM-R4F处理器简介
该处理器在CortexTM-R4处理器的基础上加入了代码
错误校正(ECC)技术,浮点运算单元(FPU)以及DMA综合
配置的能力,增强了处理器在存储器保护单元、缓存、
紧密耦合存储器、DMA访问以及调试方面的能力。
吴贵芳 easyfancy@ qq:6974784电子信息工程学院
18Henan University of Sci. & Tech.
ARM简介
• CortexTM-A8处理器简介
该处理器是ARM公司所开发的基于ARMv7架构的
首款应用级处理器,其特色是运用了可增加代码密度
和加强性能的技术、可支持多媒体以及信号处理能力
的NEONTM技术、以及能够支持Java和其他文字代码语
言的提前和即时编译的Jazelle@RTC技术。
众多先进的技术使其适用于家电以及电子行业等各
种高端的应用领域。
吴贵芳 easyfancy@ qq:6974784电子信息工程学院
19Henan University of Sci. & Tech.
ARM简介
• ARM7系列简介
该系列包括ARM9TDMI、ARM9TDMI-S、带有高
速缓存处理器宏单元的ARM720T和扩充了Jazelle的
ARM7EJ-S。该系列处理器提供Thumb 16位压缩指令
集和EmbededICE软件调试方式,适用于更大规模的
SoC设计中。
ARM7系列广泛应用于多媒体和嵌入式设备,包括
Internet设备、网络和调制解调器设备,以及移动电话、
PDA等无线设备。
吴贵芳 easyfancy@ qq:6974784电子信息工程学院
20Henan University of Sci. & Tech.
ARM简介
该系列包括ARM9TDMI、ARM920T和带有高速
缓存处理器宏单元的ARM940T。除了兼容ARM7系列,
而且能够更加灵活的设计。
ARM9系列主要应用于引擎管理、仪器仪表、安
全系统和机顶盒等领域。
• ARM9系列简介
吴贵芳 easyfancy@ qq:6974784电子信息工程学院
21Henan University of Sci. & Tech.
ARM简介
该系列为含有DSP指令集的综合处理器,包括
ARM926EJ-S、带有高速缓存处理器宏单元的
ARM966E-S/ARM946E-S。其内核在ARM7处理器内核
的基础上使用了Jazelle增强技术,该技术支持一种新
的Java操作状态,允许在硬件中执行Java字节码。
ARM9E系列主要应用于下一代无线设备、数字消
费品、成像设备、工业控制、存储设备和网络设备等
领域。
• ARM9E系列简介
吴贵芳 easyfancy@ qq:6974784电子信息工程学院
22Henan University of Sci. & Tech.
ARM简介
• ARM10E系列简介
该系列包括ARM1020E和ARM1020E处理器核,
其核心在于使用向量浮点(VFP)单元VFP10提供高性
能的浮点解决方案,从而极大提高了处理器的整型和
浮点运算性能。
可以用于视频游戏机和高性能打印机等场合。
吴贵芳 easyfancy@ qq:6974784电子信息工程学院
23Henan University of Sci. & Tech.
ARM简介
• Xscale简介
Intel Xscale微控制器则提供全性能、高性价比、
低功耗的解决方案,支持16位Thumb指令并集成数字
信号处理(DSP)指令。
主要应用于手提式通讯和消费电子类设备。
吴贵芳 easyfancy@ qq:6974784电子信息工程学院
24Henan University of Sci. & Tech.
ARM9TDMI-S
ARM9TDMI
• 简介
ARM9TDMI是基于ARM体系结构V4版本的低端
ARM核。 其弥补了ARM6很难在低于5V电压下稳定工
作的不足,还增加了后缀所对应的功能:
支持高密度16位的Thumb指令集;
支持片上调试;
支持64位乘法;
支持EmbededICE观察硬件;
ARM9TDMI 的可综合(synthesizable)
版本(软核),对应用工程师来说其编
程模型与ARM9TDMI 一致;
注意:“ARM核”并非芯片,ARM核与其它部件
如RAM、ROM、片内外设组合在一起才能构成现实的
芯片。
吴贵芳 easyfancy@ qq:6974784电子信息工程学院
25Henan University of Sci. & Tech.
ARM9TDMI
• 存储器的字与半字
从偶数地址开始的连续2个字节构成一个半字;
以能被4整除的地址开始的连续4个字节构成一个
字;
ARM指令的长度刚好是一个字,Thumb指令的长
度刚好是一个半字。
吴贵芳 easyfancy@ qq:6974784电子信息工程学院
26Henan University of Sci. & Tech.
ARM9TDMI
如果一个数据是从偶地址开始的连续存储,那么
它就是半字对齐,否则就是非半字对齐;
如果一个数据是以能被4整除的地址开始的连续存
储,那么它就是字对齐,否则就是非字对齐。
方式 半字对齐 字对齐
地址
……
0x4002
0x4004
……
……
0x4004
0x4008
……
特征
Bit0=0
其他位为任意值
Bit1=0,Bit0=0
其他位为任意值
• 存储器的存储方式
吴贵芳 easyfancy@ qq:6974784电子信息工程学院
27Henan University of Sci. & Tech.
ARM9TDMI
• 三级流水线
ARM处理器使用流水线来增加处理器指令流的速
度,这样可使几个操作同时进行,并使处理和存储器系
统连续操作,能提供
ARM9TDMI的流水线分3级,分别为:
取指 译码 执行取指 译码 执行
处理指令并将结果写回寄存器
识别将要被执行的指令
从寄存器装载一条指令
正常操作过程中,在执行一条指令的同时对下一条
(第二条)指令进行译码,并将第三条指令从存储器中取
出。
在ARM状态下,流水线上各指令的地址为: 在Thumb状态下,流水线上各指令的地址为:
PC PC-4 PC-8PC PC-2 PC-4
吴贵芳 easyfancy@ qq:6974784电子信息工程学院
28Henan University of Sci. & Tech.
ARM9TDMI
• 三级流水线结构的指令执行顺序
PC
指令1
指令2
指令3
指令4
……
……
程序存储器
PC-4
PC-8
PC+4
周期1 周期2 周期3 周期4 周期5 周期6
取指 译码 执行
取指 译码 执行
取指 译码 执行
取指 译码 执行
周期2周期1 周期3 周期4
在第1个周期,PC指向指令1,此时指令1
进入三级流水线的取指阶段。
1 在第2个周期,PC指向指令2,此时指令
1进入三级流水线的译码阶段,同时取出指
令2。
2 在第3个周期,PC指向指令3,此时指令
1进入三级流水线的执行阶段,指令2进入译
码阶段,取出指令3。
3 在第4个周期,指令1执行完成,指令2和
指令3流水线推进一级,同时开始指令4的
取指处理。
4
处理器执行一条
指令的三个阶段
吴贵芳 easyfancy@ qq:6974784电子信息工程学院
29Henan University of Sci. & Tech.
执行ADD PC,PC,#4指
令后,PC的值为多少?
ARM9TDMI
• 思考题
ADD PC,PC,#4
……
……
……
0x4000
0x4004
0x4008
0x400C
地址 指令
PC
取指 译码 执行
PC PC-4 PC-8
ARM7的3级流水线
ADD
程序计数器R15(PC)
总是指向“正在取指”
的指令,而不是指向“
正在执行”的指令或“
正在译码”的指令。
一般来说,人们习惯
性约定将“正在执行”
的指令作为参考点,则:
PC值=当前程序执行位置+8
注:ARM状态时,
每条指令为4字节长。
PC指向0x4000地址,
取指ADD指令。
PC指向0x4004地址,
译码ADD指令。
PC指向0x4008地址,
执行ADD指令,所以指
令执行的结果为:
PC=PC+4=0x4008+4
=0x400C。
…………
吴贵芳 easyfancy@ qq:6974784电子信息工程学院
30Henan University of Sci. & Tech.
CPU
扫
描
链
1
扫
描
链
1
数
据
总
线数据总线 扫描链
1
扫
描
链
2
协处理器
信号接口
EmbeddedICE-RT
TAP 控制器
EmbeddedICE-RT
宏单元
DBGTCKEN
DBGTMS
DBGnTRST
DBGTDI
DBGTDO
RDATA[31:0]
WDATA[31:0]
ADDR[31:0]
TRANS[1:0]
PROT[1:0]
SIZE[1:0]
WRITE
LOCK
DBGRNG(0)
DBGRNG(1)
DBGEXT(1)
DBGEXT(0)
ARM模块框图
CPU协处理
接口信号
EmbedICE硬件
仿真功能模块
片上调试系统
读写总线
吴贵芳 easyfancy@ qq:6974784电子信息工程学院
31Henan University of Sci. & Tech.
ARM内核框图
地址寄存器
寄存器组
31*32位寄存器
(6个状态寄存器)
地址增加器
乘法器
桶形移位器
32位ALU
写数据寄存器
指令管线读数据寄存器
Thumb指令译码器
指令译码
和
控制逻辑
ADDR[31:0
]
CLK
CLEN
CFGBIGEND
nIRQ
nFIQ
nRESET
ABORT
LOCK
WRITE
SIZE[1:0]
PROT[1:0]
TRANS[1:0]
DBG输出
DBG输入
CP控制
CP握手
WDATA[31:0] RDATA[31:0]
扫描调试
控制
吴贵芳 easyfancy@ qq:6974784电子信息工程学院
32Henan University of Sci. & Tech.
ARM功能框图
ARM9TDMI
处理器
LOCK
CLK
CLKEN
nIRQ
nFIQ
nRESET
CFGBIGEND
DBGRQ
DMORE
DBGINSTRVAILD
DBGBREAK
DBGACK
DBGnEXEC
DBGEXT[1]
DBGEXT[0]
DBGEN
DBGCOMMTX
DBGCOMMRX
DBGRNG[0]
DBGRNG[1]
DBGTCKEN
DBGTMS
DBGTDI
DBGnTRST
DBGTDO
DBGnTDOEN
ADDR[31:0]
WDATA[31:0]
RDATA[31:0]
ABORT
WRITE
SIZE[1:0]
PROT[1:0]
TRANS[1:0]
CPnTRANS
CPnOPC
CPnMREQ
CPSEQ
CPTBIT
CPnI
CPA
CPB
同步的扫描调
试访问接口
存储器接口
存储器管理接口
协处理器接口
时钟
中断
总线控制
仲裁
调试
吴贵芳 easyfancy@ qq:6974784电子信息工程学院
33Henan University of Sci. & Tech.
ARM处理器状态
• 处理器状态
ARM9TDMI处理器内核包含2套指令系统,分别为
ARM指令集和Thumb指令,并且各自对应1种处理器的
状态:
ARM状态:32位,处理器执行字方式的ARM指令,
处理器默认为此状态;
Thumb状态:16位,处理器执行半字方式的Thumb
指令。
注意:两个状态之间的切换并不影响处理器模式或
寄存器内容。
吴贵芳 easyfancy@ qq:6974784电子信息工程学院
34Henan University of Sci. & Tech.
ARM处理器状态
• 状态切换的一个例子
地址最低位为
0,表示切换
到ARM状态
使用BX指令将ARM内核的操作状态在ARM状态和
Thumb状态之间进行切换。
ARM指令集
Thumb
指令集
CODE32
LDR R0, =Lable+1
BX R0
CODE16
Lable MOV R1, #12
CODE16
LDR R0, =Lable
BX R0
CODE32
Lable MOV R1, #10
地址最低位为
1,表示切换
到Thumb状态
跳转地址标号
执行完BX指令,处
理器切换到Thumb
状态,开始执行
Thumb指令程序代码指令集关系
从ARM状态切换到Thumb状态的程序代码如下: 从Thumb状态切换到ARM状态的程序代码如下:
执行完BX指令,处
理器切换到ARM状
态,开始执行ARM
指令
吴贵芳 easyfancy@ qq:6974784电子信息工程学院
35Henan University of Sci. & Tech.
ARM处理器模式
• 简介
ARM体系结构支持7种处理器模式,分别为:用户模
式、快中断模式、中断模式、管理模式、中止模式、未定
义模式和系统模式。这样的好处是可以更好的支持操作系
统并提高工作效率。ARM9TDMI完全支持这七种模式。
吴贵芳 easyfancy@ qq:6974784电子信息工程学院
36Henan University of Sci. & Tech.
除用户模式外,其它模式均为特权模式。ARM内部
寄存器和一些片内外设在硬件设计上只允许(或者可选为
只允许)特权模式下访问。此外,特权模式可以自由的切
换处理器模式,而用户模式不能直接切换到别的模式。
处理器模式 说明 备注
用户(usr) 正常程序运行的工作模式 不能直接从用户模式切换到其它模式
特
权
模
式
系统(sys) 用于支持操作系统的特权任务
等
与用户模式类似,但具有可以直接切换
到其它模式等特权
异
常
模
式
快中断(fiq) 快速中断请求处理 只有在FIQ异常响应时,才进入此模式
中断(irq) 中断请求处理 只有在IRQ异常响应时,才进入此模式
管理(svc) 供操作系统使用的一种保护模
式
只有在系统复位和软件中断响应时,才
进入此模式
中止(abt) 用于虚拟内存和/或存储器保护 在ARM7内核中没有多大用处
未定义
(und) 支持软件仿真的硬件协处理器
只有在未定义指令异常响应时,才进入
此模式
• 处理器模式
这两种模式都不能由异常进入,想要进入必须修改
CPSR,而且它们使用完全相同的寄存器组。系统模式是
特权模式,不受用户模式的限制。操作系统在该模式下
访问用户模式的寄存器就比较方便,而且操作系统的一
些特权任务可以使用这个模式访问一些受控的资源。
这五种模式称为异常模式。它们除了可以通过程序切
换进入外,也可以由特定的异常进入。当特定的异常出现
时,处理器进入相应的模式。每种异常模式都有一些独立
的寄存器,以避免异常退出时用户模式的状态不可靠。
何时进入异常模式,具体规定如下:
•处理器复位之后进入管理模式,操作系统内核通常处于
管理模式;
•当处理器访问存储器失败时,进入数据访问中止模式;
•当处理器遇到没有定义或不支持的指令时,进入未定义
模式;
•中断模式与快速中断模式分别对ARM处理器2种不同级
别的中断作出响应。
吴贵芳 easyfancy@ qq:6974784电子信息工程学院
37Henan University of Sci. & Tech.
ARM内部寄存器
• 简介
在ARM处理器内部共有37个用户可访问的寄存器,
分别为31个通用32位寄存器和6个状态寄存器。
ARM处理器共有7种不同的处理器模式,每种模
式都有一组相应的寄存器组,最多可以18个活动的寄
存器。
吴贵芳 easyfancy@ qq:6974784电子信息工程学院
38Henan University of Sci. & Tech.
ARM状态各模式下的寄存器
寄存器
类别
寄存器在汇
编中的名称
各模式下实际访问的寄存器
用户 系统 管理 中止 未定义 中断 快中断
通
用
寄
存
器
和
程
序
计
数
器
R0(a1) R0
R1(a2) R1
R2(a3) R2
R3(a4) R3
R4(v1) R4
R5(v2) R5
R6(v3) R6
R7(v4) R7
R8(v5) R8 R8_fiq
R9(SB,v6) R9 R9_fiq
R10(SL,v7) R10 R10_fiq
R11(FP,v8) R11 R11_fiq
R12(IP) R12 R12_fiq
R13(SP) R13 R13_scv R13_abt R13_und R13_irq R13_fiq
R14(LR) R14 R14_svc R14_abt R14_und R13_irq R14_fiq
R15(PC) R15
状态
寄存器
CPSR CPSR
SPSR - SPSR_svc SPSR_abt SPSR_und SPSR_irq SPSR_fiq
所有的37个寄存器,
分成两大类:
31个通用32位寄存器;
6个状态寄存器。
吴贵芳 easyfancy@ qq:6974784电子信息工程学院
39Henan University of Sci. & Tech.
ARM状态各模式下可以访问的寄存器
寄存器
类别
寄存器在汇
编中的名称
各模式下实际访问的寄存器
用户 系统 管理 中止 未定义 中断 快中断
通
用
寄
存
器
和
程
序
计
数
器
R0(a1) R0
R1(a2) R1
R2(a3) R2
R3(a4) R3
R4(v1) R4
R5(v2) R5
R6(v3) R6
R7(v4) R7
R8(v5) R8 R8_fiq
R9(SB,v6) R9 R9_fiq
R10(SL,v7) R10 R10_fiq
R11(FP,v8) R11 R11_fiq
R12(IP) R12 R12_fiq
R13(SP) R13 R13_svc R13_abt R13_und R13_irq R13_fiq
R14(LR) R14 R14_svc R14_abt R14_und R14_irq R14_fiq
R15(PC) R15
状态
寄存器
CPSR CPSR
SPSR - SPSR_svc SPSR_abt SPSR_und SPSR_irq SPSR_fiq
吴贵芳 easyfancy@ qq:6974784电子信息工程学院
40Henan University of Sci. & Tech.
未分组的通用寄存器
寄存器
类别
寄存器在汇
编中的名称
各模式下实际访问的寄存器
用户 系统 管理 中止 未定义 中断 快中断
通
用
寄
存
器
和
程
序
计
数
器
R0(a1) R0
R1(a2) R1
R2(a3) R2
R3(a4) R3
R4(v1) R4
R5(v2) R5
R6(v3) R6
R7(v4) R7
R8(v5) R8 R8_fiq
R9(SB,v6) R9 R9_fiq
R10(SL,v7) R10 R10_fiq
R11(FP,v8) R11 R11_fiq
R12(IP) R12 R12_fiq
R13(SP) R13 R13_scv R13_abt R13_und R13_irq R13_fiq
R14(LR) R14 R14_svc R14_abt R14_und R13_irq R14_fiq
R15(PC) R15
状态
寄存器
CPSR CPSR
SPSR - SPSR_svc SPSR_abt SPSR_und SPSR_irq SPSR_fiq
寄存器R0~R7为未
分组的通用寄存器,
它们在任何处理器模
式都对应于相同的32
位物理寄存器。
第一类分组的通用寄存器
寄存器R8~R12
有两个分组的物
理寄存器。一个
用于除FIQ模式
之外的所有寄存
器模式,另一个
用于FIQ模式。
在发生FIQ中断
后,处理器不必
为保护寄存器而
浪费时间,从而
加速了FIQ的处
理速度。
第二类分组的通用寄存器
寄存器R13、R14分别
有6个分组的物理寄存
器。1个用于用户和系
统模式,其余5个分别
用于5种异常模式。
寄存器R13通常作为
堆栈指针(SP),用
于保存待使用的寄存
器的内容。
寄存器R14称为链接寄存器(LR),
在结构上有两个特殊功能:
当使用BL指令调用子程序时,返回
地址将自动存入R14中;
当发生异常时,将R14对应的异常
模式版本设置为异常返回地址(有
些异常有一个小的固定偏移量)。
程序计数器
寄存器R15称为程序计
数器(PC),它指向
正在“取指”的指令。
状态寄存器
寄存器CPSR为当前程序状态寄存器,在异常
模式中,另外一个寄存器“程序状态保存寄
存器(SPSR)”可以被访问。每种异常都有
自己的SPSR,在进入异常时它保存CPSR的当
前值,异常退出时可通过它恢复CPSR。
吴贵芳 easyfancy@ qq:6974784电子信息工程学院
41Henan University of Sci. & Tech.
ARM内部寄存器
• 在Thumb状态各模式下实际访问的寄存器
Thumb状态寄存器集是ARM状态集的子集,程序
员可以直接访问的寄存器为:
8个通用寄存器R0~R7;
程序计数器(PC);
堆栈指针(SP);
链接寄存器(LR);
当前程序状态寄存器( CPSR)。
吴贵芳 easyfancy@ qq:6974784电子信息工程学院
42Henan University of Sci. & Tech.
在Thumb状态各模式下的寄存器
寄存器
类别
寄存器在汇
编中的名称
各模式下实际访问的寄存器
用户 系统 管理 中止 未定义 中断 快中断
通
用
寄
存
器
和
程
序
计
数
器
R0(a1) R0
R1(a2) R1
R2(a3) R2
R3(a4) R3
R4(v1) R4
R5(v2) R5
R6(v3) R6
R7(v4,WR) R7
SP R13 R13_scv R13_abt R13_und R13_irq R13_fiq
LR R14 R14_svc R14_abt R14_und R13_irq R14_fiq
PC R15
状态
寄存器
CPSR CPSR
• 未分组的通用寄存器• 第二类分组的通用寄存器
在汇编语言中寄存器R0~R7为通用寄存
器,对于任何处理器模式,它们中的每
一个都对应于相同的32为物理寄存器。
堆栈指针SP对应ARM状态的寄存器R13。
每个异常模式都有其自身的SP分组版本,
SP通常指向各异常模式所专用的堆栈。
注意:在发生异常时,处理器自动进入
ARM状态。
链接寄存器LR对应ARM状态寄存器R14。
注意:在发生异常时,处理器自动进入
ARM状态。
吴贵芳 easyfancy@ qq:6974784电子信息工程学院
43Henan University of Sci. & Tech.
ARM状态
Thumb寄存器在ARM状态寄存器上的映射
R0
R1
R2
R3
R4
R5
R6
R7
R8
R9
R10
R11
R12
堆栈指针(R13)
连接寄存器(R14)
程序计数器(R15)
CPSR
SPSR
R0
R1
R2
R3
R4
R5
R6
R7
堆栈指针(SP)
连接寄存器(LR)
程序计数器(PC)
CPSR
Thumb状态
Thumb状态R0~R7与
ARM状态R0~R7相同;
1
Thumb状态CPSR(无
SPSR)与ARM状态CPSR相
同。
5
Thumb状态SP映射到
ARM状态R13;
2
Thumb状态LR映射到
ARM状态R14;
3
Thumb状态PC映射到
ARM状态R15(PC);
4
低端寄存器
高端寄存器
在Thumb状态中,高端
寄存器的访问是受到限制的,
只有MOV、CMP和ADD指
令可以对其访问,可以用于
数据的快速暂存。
吴贵芳 easyfancy@ qq:6974784电子信息工程学院
44Henan University of Sci. & Tech.
ARM
Thumb
ARM
Reset
BX
BX
ARM
中断服务程序正常程序事件
ARM
ARM
ISR1
ISR2
ISRn
…
• 状态切换过程
异常发生
进入
退出
系统复位,自动切换到ARM状态。1 通过BX和BLX指令改变当前处理器模式,使之从
ARM状态切换到Thumb状态。
2 在Thumb状态下,正常程序执行时产生中断异常。3 处理器进入中断异常,自动的将模式切换到ARM状
态。
4 异常处理完毕,返回正常程序,此时处理器自动的将
模式切换到Thumb状态。
5 再次通过BX和BLX指令改变当前处理器模式,使之从
Thumb状态切换到ARM状态。
6 程序在正常运行的过程中,复位事件产生,导致
系统复位。
吴贵芳 easyfancy@ qq:6974784电子信息工程学院
45Henan University of Sci. & Tech.
当前程序状态寄存器
• 简介
ARM内核包含1个CPSR和5个仅供异常处理程序
使用的SPSR。CPSR反映当前处理器的状态,其包含:
4个条件代码标志(负标志N、零标志Z、进位标志
C和溢出标志V );
2个中断禁止位(IRQ禁止与FIQ禁止);
5个对当前处理器模式进行编码的位(M[4:0]);
1个用于指示当前执行指令的位(ARM指令还是
Thumb指令)。
吴贵芳 easyfancy@ qq:6974784电子信息工程学院
46Henan University of Sci. & Tech.
当前程序状态寄存器
• 程序状态寄存器的格式
N Z C V — — I M0M1M2M3M4TF—. . .
31 30 29 28 27 26 8 7 6 5 4 3 2 1 0
条件代码标志 保留 控制位
溢出标志
进位或借位扩展
零
负或小于
IRQ禁止
FIQ禁止
状态位
模式位
N Z C V I M0M1M2M3M4TF
吴贵芳 easyfancy@ qq:6974784电子信息工程学院
47Henan University of Sci. & Tech.
当前程序状态寄存器
• 条件代码标志
各标志位的含义如下:
负标志N:运算结果的第31位值,记录标志设置操
作的结果;
零标志Z:如果标志设置的操作为0,则置位;
进位标志C:记录无符号加法溢出,减法无借位,
循环移位;
溢出标志V:记录标志设置操作的有符号溢出。
吴贵芳 easyfancy@ qq:6974784电子信息工程学院
48Henan University of Sci. & Tech.
警告:绝对不要强制改变CPSR寄存器中的控制
位T。如果这样做,处理器将进入一个无法预测的
状态。
当前程序状态寄存器
• 控制位
1、中断禁止控制位I和F;2、处理器状态位T;3、处理器模式位M0~M4。
•当控制位I置位时,IRQ中断被禁止;
•当控制位F置位时,FIQ中断被禁止。
•当控制位T置位时,处理器正在Thumb状态下运行;
•当控制位T清零时,处理器正在ARM状态下运行。
M[4:0] 模式 可见的Thumb状态寄存器 可见的ARM状态寄存器
10000 用户 R0~R7, SP, LR, PC, CPSR R0~R14, PC, CPSR
10001 快速中断
R0~R7, SP_fiq, LR_fiq, PC,
CPSR, SPSR_fiq
R0~R7, R8_fiq~R14_fiq, PC,
CPSR, SPSR_fiq
10010 中断
R0~R7, SP_irq, LR_irq, PC,
CPSR, SPSR_fiq
R0~R12, R13_irq, R14_irq, PC,
CPSR, SPSR_irq
10011 管理
R0~R7, SP_svc, LR_svc, PC,
CPSR, SPSR_svc
R0~R12, R13_svc, R14_svc, PC,
CPSR, SPSR_svc
10111 中止
R0~R7, SP_abt, LR_abt, PC,
CPSR, SPSR_abt
R0~R12, R13_abt, R14_abt, PC,
CPSR, SPSR_abt
11011 未定义
R0~R7, SP_und, LR_und,
PC,
CPSR, SPSR_und
R0~ R12, R13_und, R14_und,
PC,
CPSR, SPSR_und
11111 系统
R0~R7, SP, LR, PC,
CPSR
R0~R14, PC,
CPSR
注意:不是所有模式位的组合都定义了有
效的处理器模式,如果将非法值写入M[4:0]中,
处理器将进入一个无法恢复的模式。
吴贵芳 easyfancy@ qq:6974784电子信息工程学院
49Henan University of Sci. & Tech.
当前程序状态寄存器
• 保留位
CPSR中的保留位被保留将来使用。当改变CPSR
标志和控制位时,请确认没有改变这些保留位。
另外,请确保您的程序不依赖于包含特定值的
保留位,因为将来的处理器可能会将这些位设置为1
或者0。
吴贵芳 easyfancy@ qq:6974784电子信息工程学院
50Henan University of Sci. & Tech.
ARM体系的异常
• 异常简介
只要正常的程序流被暂时中止,处理器就进入异常
模式。例如在用户模式下执行程序时,当外设向处理
器内核发出中断请求导致内核从用户模式切换到异常
中断模式。
如果同时发生两个或更多异常,那么将按照固定的
顺序来处理异常。
吴贵芳 easyfancy@ qq:6974784电子信息工程学院
51Henan University of Sci. & Tech.
• 异常入口/出口汇总
下表所示为异常返回地址值以及退出异
常处理程序所推荐使用的指令。
异常或入口 返回指令 返回地址
SWI MOVS PC,R14_svc R14
未定义的指令 MOVS PC,R14_und R14
预取中止 SUBS PC,R14_abt,#4 R14-4
快速中断 SUBS PC,R14_fiq,#4 R14-4
中断 SUBS PC,R14_irq,#4 R14-4
数据中止 SUBS PC,R14_abt,#8 R14-8
复位 无 -
注意:“MOVS PC,R14_svc”是指在管理模式执行
MOVS PC,R14 指令,同样类似的指令还有“MOVS
PC,R14_und”、“SUBS PC,R14_abt,#4”等。
吴贵芳 easyfancy@ qq:6974784电子信息工程学院
52Henan University of Sci. & Tech.
ARM体系的异常
• 异常向量表
地址 异常 进入时的模式 进入时I的状态 进入时F的状态
0x00000000 复位 管理 禁止 禁止
0x00000004 未定义指令 未定义 I F
0x00000008 软件中断异常 管理 禁止 F
0x0000000C 中止(预取) 中止 I F
0x00000010 中止(数据) 中止 I F
0x00000014 保留 保留 - -
0x00000018 IRQ 中断 禁止 F
0x0000001C FIQ 快速中断 禁止 禁止
注:表中的I和F表示不对该位有影响,保留原来的值。
吴贵芳 easyfancy@ qq:6974784电子信息工程学院
53Henan University of Sci. & Tech.
ARM体系的异常
• 异常优先级
当多个异常同时发生时,一个固定的优先级决定系
统处理它们的顺序。
优先级 异常
1 复位
2 数据中止
3 FIQ
4 IRQ
5 预取指中止
6 未定义指令中止
6 软件中断异常
优
先
级
由
高
到
低
吴贵芳 easyfancy@ qq:6974784电子信息工程学院
54Henan University of Sci. & Tech.
ARM体系的异常
• 异常的进入
当一个异常导致模式切换时,内核自动的做如下处理:
• 将异常处理程序的返回地址(加固定的偏移量)保存
到相应异常模式下的LR;
• 将CPSR的当前值保存到相应异常模式下的SPSR;• 设置CPSR为相应的异常模式;• 设置PC为相应异常处理程序的中断入口向量地址,跳
转到相应的异常中断处理程序执行;
用户模式
SPSR
异常模式
CPSR
R15(PC)
R14(LR)
R0~R13
-
BackAddr
JumpAddr
UserMode
ExceptionMode
程序代码正常运行在用户模式下。
吴贵芳 easyfancy@ qq:6974784电子信息工程学院
55Henan University of Sci. & Tech.
ARM体系的异常
• 异常的进入
当一个异常导致模式切换时,内核自动的做如下处理:
• 将异常处理程序的返回地址(加固定的偏移量)保存
到相应异常模式下的LR;
• 将CPSR的当前值保存到相应异常模式下的SPSR;
• 设置CPSR为相应的异常模式;
• 设置PC为相应异常处理程序的中断入口向量地址,跳
转到相应的异常中断处理程序执行;
吴贵芳 easyfancy@ qq:6974784电子信息工程学院
56Henan University of Sci. & Tech.
ARM体系的异常
• 异常的退出
当异常处理程序结束时,异常处理程序必须:
• 返回到发生异常中断的指令的下一条指令处执行,即
就是说将LR中的值减去偏移量后移入PC;
• 将SPSR的值复制回CPSR;
SPSR
异常模式用户模式
CPSR
R15(PC)
R14(LR)
R0~R13
-
BackAddr
CurrentAddr
UserMode
ExceptionMode
BackAddr-Off
吴贵芳 easyfancy@ qq:6974784电子信息工程学院
57Henan University of Sci. & Tech.
ARM体系的异常
• 异常的退出
当异常处理程序结束时,异常处理程序必须:
• 返回到发生异常中断的指令的下一条指令处执行,即
就是说将LR中的值减去偏移量后移入PC;
• 将SPSR的值复制回CPSR;
• 清零在入口处置位的中断禁止标志。
吴贵芳 easyfancy@ qq:6974784电子信息工程学院
58Henan University of Sci. & Tech.
ARM体系的异常
• 复位异常
当nRESET信号被拉低时,ARM处理器放弃正在执
行的指令,等到nRESET信号再次变高时,处理器执行
一下操作:
• 强制M[4:0]变为b10011,系统进入管理模式;
• 将CPSR中的标志位I和F置位,IRQ与FIQ中断被禁止;
• 将CPSR中的标志位T清零,处理器处于ARM状态;
• 强制PC从地址0x00开始对下一条指令进行取指;
• 返回到ARM状态并恢复执行。
吴贵芳 easyfancy@ qq:6974784电子信息工程学院
59Henan University of Sci. & Tech.
ARM体系的异常
• 中断请求异常
只有当CPSR中相应的中断屏蔽位被清除时,才可
能发生IRQ异常,中断请求(IRQ)异常由一个nIRQ输
入端的低电平所产生的正常中断。
注:中断异常产生时,中断异常模式下的R14保存
的是PC的值。
取指 译码 执行
取指 译码 执行
取指 译码 执行
周期4 周期5周期1 周期2 周期3
PC-8指令1
指令2
指令3
PC-4
PC
中断发生周期
指令1的执行不会中断;
异常程序结束时返回到指令2;
进入中断服务程序时,指令3
地址被保存在R14中。
吴贵芳 easyfancy@ qq:6974784电子信息工程学院
60Henan University of Sci. & Tech.
程序运行在用户模式下,当一个IRQ异常中断发生
时,内核切换到“中断模式”,并自动的做如下处理:
ARM体系的异常
• 进入IRQ异常模式
R0~R12
R13_usr
R14_usr
R15
CPSR
-
R13_irq
R14_irq
SPSR_irq
USR模式 IRQ模式
2
I=1,T=0,mod=irq
3
异常向量地址0x0018
4
ISR代码将寄存器压栈
5
1
将异常处理程序的返回地址保存到异常模式下的
R14(R14_irq)中。
1 用户模式的CPSR被保存到新的IRQ中断异常模式
SPSR_irq中。
2 修改CPSR,禁止新的IRQ中断产生,进入ARM状态,
设置为IRQ模式。
3 设置IRQ模式下的PC为IRQ异常处理程序的中断入口
向量地址0x00000018。
4 将IRQ中断异常模式的栈顶指针保存到R13_irq中,
之后软件处理程序调用中断服务程序为中断源服务。
5
吴贵芳 easyfancy@ qq:6974784电子信息工程学院
61Henan University of Sci. & Tech.
从R13_irq中获取IRQ中断异常模式的栈顶指针。1
ARM体系的异常
• 退出IRQ异常模式
R0~R12
R13_usr
R14_usr
R15
CPSR
-
R13_irq
R14_irq
SPSR_irq
IRQ模式USR模式
恢复CPSR2
R14减4后为返回地址3
ISR代码将寄存器出栈
1
将SPSR_irq中的内容复制到CPSR。2 由于流水线的特性,将R14_irq指向的地址减去一个
偏移量后存入R15(PC),实现指令为:
SUBS PC,R14_irq,#4
3 中断服务程序执行完毕后,系统将通过以下几步软
件操作返回用户模式:
吴贵芳 easyfancy@ qq:6974784电子信息工程学院
62Henan University of Sci. & Tech.
ARM体系的异常
• 快速中断请求异常
快速中断请求(FIQ)适用于对一个突发事件的快速
响应,这得益于在ARM状态中,快中断模式有8个专用
的寄存器可用来满足寄存器保护的需要(这可以加速
上下文切换的速度)。
不管异常入口是来自ARM状态还是Thumb状态,
FIQ处理程序都会通过执行下面的指令从中断返回:
SUBS PC,R14_fiq,#4
在一个特权模式中,可以通过置位CPSR中的F位来
禁止FIQ异常。
吴贵芳 easyfancy@ qq:6974784电子信息工程学院
63Henan University of Sci. & Tech.
系统模式 FIQ模式
程
序
寄
存
器
组
• FIQ中断的例子
“?”表示该位无关 SPSR_fiq
PC
CPSR
SPSR
MODTFI. . .N Z C V
SYS100. . .????
R8
~
R12
R8_fiq
~
R12_fiq
LR LR_sys LR_fiq
R0~R7
SP_sys SP_fiq
Thumb
Thumb
指令1
指令2
指令3
BX指令
BX指令
ARM
ARM
SYS100.????
FIQ011. . .????
BackAddr
JumpAddr
Ju
m
p
10 SYS100. . .????
Jum
p
BackAddr-4
Thumb不是一个完整
的体系结构,不能指望
处理器只执行Thumb指
令而不支持ARM指令集。
因此,Thumb指令只
需要支持通用功能,必
要时可以借助于完善的
ARM指令集,比如,所
有异常自动进入ARM状
态。
在系统模式下运行用
户程序,当前处理器处
于Thumb状态,执行
Thumb指令代码,同时
处理器还允许IRQ和FIQ
中断。
指令1的在执行过程
产生了FIQ中断。
注:完成指令1的执
行后才响应中断。
FIQ中断相应过程中,
硬件自动执行如下动作:
将CPSR寄存器内容存入
IRQ模式的SPSR寄存器
置为F和I(禁止FIQ和
IRQ中断);
清零T位(进入ARM状
态);
设置MOD位,切换处理
器模式至FIQ模式。
将下一条的地址存入
FIQ模式的LR寄存器,即
指令3的地址。
将跳转地址存入PC,即
FIQ中断服务函数的入口
地址,实现跳转。
FIQ中断服务程序在
ARM状态下执行现场保
护等操作。
FIQ中断服务程序使
用BX指令,将处理器从
ARM状态切换到Thumb
状态,通过置位CPSR的T
位实现。
FIQ中断服务程序开
始执行Thumb指令。
FIQ中断服务程序使
用BX指令,将处理器从
Thumb状态切换到ARM
状态,通过清除CPSR的T
位实现。
FIQ中断服务程序在
ARM状态下执行恢复中
断现场等操作。
FIQ中断异常处理结
束后,异常处理程序完
成以下动作:
将SPSR寄存器的值复制
回CPSR寄存器;
将LR寄存的值减去一个
常量(FIQ异常为4)后
复制到PC寄存器,跳转
到被中断的用户程序
(指令2的地址)。
吴贵芳 easyfancy@ qq:6974784电子信息工程学院
64Henan University of Sci. & Tech.
ARM体系的异常
• 未定义的指令异常
未定义指令异常是内部异常中断,当ARM处理器
遇到一条自己和系统内部任何协处理器都无法执行的
指令时,就会发生未定义指令异常,从而进入中断处
理程序,同时软件可使用这一机制通过仿真未定义的
协处理器指令来扩展ARM指令集。
在仿真失败的指令后,捕获处理器执行下面的指令:
MOVS PC,R14_und
吴贵芳 easyfancy@ qq:6974784电子信息工程学院
65Henan University of Sci. & Tech.
ARM体系的异常
• 中止异常
中止表示当前对存储器的访问不能被完成,这是由
外部ABORT输入信号引起的异常中断。中止类型有2种
类型:
• 预取指中止:由程序存储器引起的中止异常;
• 数据中止:由数据存储器引起的中止异常。
吴贵芳 easyfancy@ qq:6974784电子信息工程学院
66Henan University of Sci. & Tech.
ARM体系的异常
• 预取指中止
当发生预取指中止时,ARM内核将预取的指令标
记为无效,但在指令到达流水线的执行阶段时才进入
异常。如果指令在流水线中因为发生分支而没有被执
行,中止将不会发生。
在处理中止的原因之后,不管处于哪种处理器操
作状态,处理程序都会执行下面的指令恢复PC和CPSR
并重试被中止的指令:
SUBS PC,R14_abt,#4
吴贵芳 easyfancy@ qq:6974784电子信息工程学院
67Henan University of Sci. & Tech.
ARM体系的异常
• 数据中止
当发生数据中止异常时,异常会在“导致异常的指
令”执行后的下一条指令发生。在这种情况下,理想
的状况是进入数据中止异常的ISR,然后在内存中挑选
出问题,再重新执行导致异常的指令。
在修复产生中止的原因后,不管处于哪种处理器操
作状态,处理程序都必须执行下面的返回指令 :
SUBS PC,R14_abt,#8
吴贵芳 easyfancy@ qq:6974784电子信息工程学院
68Henan University of Sci. & Tech.
ARM体系的异常
• 软件中断异常
软件中断异常(SWI)用于进入管理模式,通常用于
请求一个特定的管理函数。SWI处理程序通过执行下面
的指令返回:
MOVS PC,R14_svc
这个动作恢复了PC和CPSR并返回到SWI之后的指令。
SWI处理程序读取操作码以提取SWI函数编号。
吴贵芳 easyfancy@ qq:6974784电子信息工程学院
69Henan University of Sci. & Tech.
ARM体系的异常
• 中断延迟
中断延迟即从外部中断请求信号发出到执行对应的
中断服务程序ISR的第1条指令所需要的时间。
通过软件程序设计来缩短中断延迟的方法有:中断
优先级和中断嵌套。
吴贵芳 easyfancy@ qq:6974784电子信息工程学院
70Henan University of Sci. & Tech.
ARM体系的存储系统
• 简介
ARM处理器采用冯·诺依曼(Von Neumann)结
构,指令、数据和I/O统一编址(即存在同一个空间)。
只有装载、保存和交换指令可访问存储器中的数据。
ARM芯片一般在处理器核和外部存储器之间有一个
存储器管理部件将局部总线的信号和时序转换为现实
的外部总线信号和时序。
ARM9
处理器核
存储器
存储器
管理器
ARM7的规范定义
了局部总线的信号
和时序。
各芯片生产厂商制
定了自己的外部总
线的信号和时序。
吴贵芳 easyfancy@ qq:6974784电子信息工程学院
71Henan University of Sci. & Tech.
ARM体系的存储系统
• 地址空间
ARM结构使用单个平面的232个8位字节地址空间。
地址空间可以看作是包含230个32位字,或231个16位半
字。如果地址向上或向下溢出地址空间,通常会发生
翻转。
注意:如果在取指操作时地址发生溢出,只要没有
执行预取的无效指令,就不会导致异常。
吴贵芳 easyfancy@ qq:6974784电子信息工程学院
72Henan University of Sci. & Tech.
ARM体系的存储系统
• 存储器格式
地址空间的规则要求字地址A:
位于地址A的字包含的字节位于地址A,A+1,A+2和
A+3;
位于地址A的半字包含的字节位于地址A和A+1;
位于地址A+2的半字包含的字节位于地址A+2和
A+3;
位于地址A的字包含的半字位于地址A和A+2;
……
字节
字节
字节
字节
……
A+3
A+2
A+1
A
存储器
半字
半字
字
吴贵芳 easyfancy@ qq:6974784电子信息工程学院
73Henan University of Sci. & Tech.
ARM体系的存储系统
• 存储器格式
存储器系统有两种映射机制:
小端存储器系统:
在小端格式中,数据的高字节存放在高地址中。
大端存储器系统:
在大端格式中,数据的高字节存放在低地址中。
……
……
A+3
A+2
A+1
A
存储器
小端存储
模式下,
0x12345678
在A地址开始
的一个字空
间的存储;
1 大端存储模
式下,
0x12345678
在A地址开始
的一个字空间
的存储;
2
0x12
0x34
0x56
0x78
……
……
A+3
A+2
A+1
A
存储器
0x78
0x56
0x34
0x12
吴贵芳 easyfancy@ qq:6974784电子信息工程学院
74Henan University of Sci. & Tech.
ARM体系的存储系统
• 非对齐的存储器访问
ARM结构通常希望所有的存储器访问都合理的对
齐,具体来说就是字访问的地址通常是字对齐的,而
半字访问使用的地址是半字对齐的。不按这种方式对
齐的存储器访问称为非对齐的存储器访问。
将 一 个 非 字 ( 半 字 ) 对 齐 的 地 址 写 入
ARM(Thumb)状态的R15寄存器,将引起非对齐
的指令取指。
在一个非字(半字)对齐的地址读写一个字(半
字),将引起非对齐的数据访问: