ARM体系结构综述
第2章 ARM体系结构

• 控制位
–
程序状态寄存器PSR(Program Status Register)的最低8位I、F、T和 M[4:0]用作控制位。当异常出现时改变控制位。处理器在特权模式 下时也可由软件改变。
• 中断禁止位 I:置1,则禁止IRQ中断; F:置1,则禁止FIQ中断。 • T位 T=0 指示ARM执行; T=1 指示Thumb执行。 • 模式控制位 M4、M3、M2、Ml和M0(M[4:0])是模式位,决定处理器 的工作模式,如表2.3.1所列。
6 (最低)
6 5
数据中止
IRQ (外部中断请求) FIQ (快速中断请求)
中止(数据)
IRQ FIQ
中止模式
IRQ FIQ
0x0000,0010
0x0000,0018 0x0000,001C
2
4 3
2.4.2 异常类型的含义
(1)复位
• • 处理器的复位电平有效时,产生复位异常 当ARM处理器或协处理器遇到不能处理的指令时,产生未定义指令异常
2.4 ARM微处理器的异常处理
• 异常:在一个正常的程序流程执行过程中,由内 部或外部源产生的一个事件使正常的程序产生暂 时的停止,称之为异常。
2.4.1 ARM体系结构的异常类型
• ARM体系结构支持7种类型的异常
• 异常出现后,强制从异常类型对应的固定存储器地址开始 执行程序。这些固定的地址称为异常向量(Exception Vectors)。
M[4:0]模式控制位
M[4: 0] 10000 10001 10010 10011 10111
处理器工作 模式 用户模式 FIQ模式 IRQ模式 管理模式 中止模式
可访问的寄存器 PC,CPSR,R14~R0 PC,R7~R0,CPSR, SPSR_fiq,R14_fiq~ R8_fiq PC,R12~R0,CPSR, SPSR_irq,R14_irq, R13_irq PC,R12~R0, CPSR, SPSR_svc,R14_svc, R13_svc PC,R12~R0, CPSR, SPSR_abt,R14_abt, R13_abt
ARM体系架构解析ppt课件

2)提供了较大的存储器带宽,各自有自己的
总线。
3)适合于数字信号处理.
4)大多数DSP都是哈佛结构.
5)ARM9是哈佛结构
6)取指和取数在同一周期进行,提高速度,
改进哈佛体系结构分成三个存储区:程序、数据、
程序和数据共用。
经营者提供商品或者服务有欺诈行为 的,应 当按照 消费者 的要求 增加赔 偿其受 到的损 失,增 加赔偿 的金额 为消费 者购买 商品的 价款或 接受服 务的费 用
6)将结果回写到寄存器组(res)
经营者提供商品或者服务有欺诈行为 的,应 当按照 消费者 的要求 增加赔 偿其受 到的损 失,增 加赔偿 的金额 为消费 者购买 商品的 价款或 接受服 务的费 用
流水线技术
❖
三级流水线技术
经营者提供商品或者服务有欺诈行为 的,应 当按照 消费者 的要求 增加赔 偿其受 到的损 失,增 加赔偿 的金额 为消费 者购买 商品的 价款或 接受服 务的费 用
因此,把它称为流水线工作方式。
处理器按照一系列步骤来执行每一条指令。典
型的步骤为:
1)从存储器读取指令(fetch)
2)译码以鉴别它是哪一类指令(dec)
3)从寄存器组取得所需的操作数(reg)
4)将操作数进行组合以得到结果或存储器地址(exe)
5)如果需要,则访问存储器存取数据(mem)
冯·诺依曼体系的特点
1)数据与指令都存储在同一存储区中,取指
令与取数据利用同一数据总线。
❖ 2)被早期大多数计算机所采用
❖ 3)ARM7——冯诺依曼体系
❖
结构简单,但速度较慢。取指不能同时取数据
经营者提供商品或者服务有欺诈行为 的,应 当按照 消费者 的要求 增加赔 偿其受 到的损 失,增 加赔偿 的金额 为消费 者购买 商品的 价款或 接受服 务的费 用
ARM体系结构详解精

ARM嵌入式系统第2章ARM体系结构ARM微处理器的编程模型♦ARM徴处理器的工作状态♦ARM体系结构的存储器格式♦ARM体系结构的指令长度及数据宽度♦ARM微处理器的处理器模式♦ARM体系结构的寄存器组织♦ARM微处理器的异常状态字、半字、字节字(Word)在ARM体系结构中,字的长度为32位半字(Half-Word)在ARM体系结构中,半字的长度为16位字节(Byg)在ARM体系结构中,字节的长度为8位。
ARM微处理器的工作状态(1)字对齐:四字节对齐半字对齐:两字节对齐两种状态:♦ARM状态:处理器执行32位的字对齐的令♦Thumb状态:处理器执行16位的、半字对齐的Thumb指令处理器工作状态的转变并不影响处理器的工作模式和相应寄存器中的内容。
I ARM微处理器的工作状态(2 )状态切换:BX {<cond>} <Rm><cond>指令的条件码。
忽略时无条件执行。
<Rm>子存器中为跳转的目标地址,当<Rm><存器的bit[O]为0时, 目标地址处的指令为ARM指令;当<Rm>^存器的bit[O]为1时,目标地址处的指令为Thumb 指令。
伪代码:if ConditionPassed(cond) thenT Flag=Rm[O]PC=Rm AND OxFFFFFFFEARM微处理器在复位或上电时处于ARM状态,发生异常时处于ARM状态。
右ARM体系结构的存储器格式(1)ARM体系结构所支持的最大寻址空间为4GB (2^字节)♦大端格式(Big Endian)字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中。
♦小端格式(Little Endian)低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节。
字地址字地址右ARM 体系结构的存储器格式(2)(0H)=0123H (4H)=4567H (8H)=89ABHBig Endian(0H)=3210H (4H)=7654H (8H)=BA98HLittle Endian右ARM 体系结构的存储器格式(3)8 9 AB4 5 6 7 0123一 “A ・■ • rO= 0x11223344 I 11 I 22 33 : 44 ILittle endian Big endianR2 =异FI*右 ARM 体系结构的指令长度及数据宽度♦指令长度:32位(在ARM 状态下) 16位(在Thumb 状态下)♦数据宽度: 字节(8位) 半字(16位) 字(32位)三种数据宽度对存储器及外部设备的访问。
ARM体系结构与编程

ARM体系结构与编程
一、ARM体系结构
ARM(Advanced RISC Machine)是由英国ARM公司开发的一种低功耗、超低成本的处理器架构,是移动设备的首选处理器。
ARM架构的处理器有ARM7、ARM9、ARM11、 Cortex-A8 、Cortex-A15等,它们核心架构特点为以下几点:
1.保护模式。
ARM架构的处理器能够在用户模式和两个高级的保护模式之间来回切换。
2.对齐式存储。
ARM架构的处理器采用对齐方式,其二进制指令必须按照固定的位置排列,以便提高存储空间的利用率。
3.浮点处理单元。
ARM架构的处理器具有浮点数处理功能,使数值运算能够高效率地完成。
4.多级缓存。
ARM架构的处理器将原始数据复制到不同级别的快速缓存中,以便快速访问。
二、ARM程序的编程
1、ARM程序的编写
ARM程序的编写可以使用C语言编写,程序开发者需要掌握ARM架构各种中央处理器扩展指令集的使用方法,以便获得更好的效率。
2、编译ARM程序
ARM程序的编译是使用GNU的gcc编译器进行的,它可以将C语言编写的程序编译成ARM架构的机器码,并可以在ARM架构的处理器上运行。
3、调试ARM程序
ARM程序的调试使用GDB程序调试,它可以提供丰富的调试工具,可以跟踪程序执行的步骤,提供全面的程序反馈信息,可以帮助开发者快速定位程序运行出错的地方。
三、总结。
ARM体系结构

ARM9TDMI处理器一个显著的特点是采用 指令和数据分离访问的方式,即采用了指令 缓存(I-Cache)和数据缓存(D-Cache)。 这样可以把指令访问和数据访问单独安排1级 流水线。
2015/9/28
9
ARM9处理能力的提高是通过增加时钟频率和减少指令执行周期实 现的。 (1)时钟频率的提高 ARM9采用了五级流水线,而ARM7采用的是三级流水线,ARM9增 加的流水线设计提高了时钟频率和并行处理能力。五级流水线能够将各 条指令处理分配到5个时钟周期内,在每个时钟周期内同时有5条指令在 执行。在同样的加工工艺下,ARM9 TDMI处理器的时钟频率是ARM7 TDMI的2倍左右。 (2)指令周期的改进 指令周期的改进有助于处理器性能的提高。性能提高的幅度依赖于 代码执行时指令的重叠。 ① load指令和store指令 指令周期数改进最明显的是load指令和store指令。 ② 互锁(interlock)技术 当指令需要的数据因为以前的指令没有执行完,将产生管道互锁。管
操作系统的保护模式 指令或数据预取操作中止时的模 式,该模式下实现虚拟存储器或 存储器保护 当执行未定义的指令时进入该模 式 响应普通中断时的处理模式
未定义模式 IRQ模式
Und Irq
FIQ模式
Fiq
响应快速中断时的处理模式
2015/9/28
21
处理器工作模式
ARM微处理器的运行模式可以通过软件改变,也可以通 过外部中断或异常处理改变。 大多数的应用程序运行在用户模式下,当处理器运行在 用户模式下时,某些被保护的系统资源是不能被访问的。 除用户模式以外,其余的6种模式称为非用户模式或特 权模式; 除去用户模式和系统模式以外的5种又称为异常模式, 常用于处理中断或异常,以及访问受保护的系统资源等情 况。
ARM体系架构

该例中用6个时钟周期执行了6条指令 所有的操作都在寄存器中(单周期执行) 指令周期数 (CPI) = 1
高速缓存(CACHE)
1、为什么采用高速缓存 微处理器的时钟频率比内存速度提高快得多,高速缓存可以提 高内存的平均性能。
2、高速缓存的工作原理 高速缓存是一种小型、快速的存储器,它保存部分主存内容的
拷贝。
高 数据
速
CACHE
CPU
缓 存
主存
控
制
地址
器
数据
总线和总线桥
CPU
高速总线
低速设备
低速总线
软硬功能分配 复杂指令增加硬件的复杂度,使指令执行周期大大加长 ,直接访存次数增多,数据重复利用率低。
不利于先进指令级并行技术的采用 流水线技术
RISC基本设计思想
精简指令集:保留最基本的,去掉复杂、使用频度不高的指令 (选取运算指令、加载、存储指令和转移指令作主指令集) ,以减小CPI: CPUtime=Instr_Count * CPI * Clock_cycle
CISC的主要缺点
指令使用频度不均衡。 高频度使用的指令占据了绝大部分的执行时间,扩充的 复杂指令往往是低频度指令。
大量复杂指令的控制逻辑不规整,不适于VLSI工艺 VLSI的出现,使单芯片处理机希望采用规整的硬联逻辑 实现,而不希望用微程序,因为微程序的使用反而制约 了速度提高。(微码的存控速度比CPU慢5-10倍)。
IC—程序中指令数,CPI—每条指令执行所有周期数
1、ARM体系结构

ARM全球合作伙伴(合作模型)
ARM产品应用领域
Samsung ML5100A Diamond Multimedia Rio 600 JVC "Pixstar" GC-X1 Alba Bush Internet TV
3Com 10/100 PCI NIC
Nintendo Gameboy Advance Lexmark Z52 Color Jetprinter HP Jornado 820
5TE
XScale ARM1020E
6
Thumb-2 SIMD Instructions Multi-processing
7
CoreSight
Improved ARM/Thumb ARM9E-S Interworking ARM966E-S CLZ Saturated arithmetic DSP multiplyaccumulate instructions Extensions: Jazelle (5TEJ)
• •
该例中,用6周期执行了4条指令 指令周期数 (CPI) = 1.5
分支流水线举例
Cycle 1 2 L 3 4 5 6 7 8 9
Address
0x8000 0x8004 0x8008 0x8FEC 0x8FF0 0x8FF4
Operation
BL 0x8FEC SUB ORR AND ORR EOR
Iomega HipZip
Sony MZ-R90 MiniDisc
Ericsson R38Share
Nokia Mediamaster
Psion Revo Plus
ARM体系结构的发展
4T
Halfword and signed halfword / byte support System mode Thumb instruction set ARM7TDMI ARM720T ARM9TDMI ARM940T ARM920T
第2 章 ARM体系结构及编程模型(OBE)汇总

ARM9TDMI的五级流水线
2020/6/24
ARM7TDMI与ARM9TDMI流水线比较
3.ARM9TDMI的五级流水线
ARM7TDMI与ARM9TDMI流水线比较
2020/6/24
ARM7和ARM9流水线比较
• 5级流水线的ARM9内核是哈佛架构,拥有独立的 指令和数据总线;指令和数据的读取可以在同一周 期进行;
ARM1020E XScale ARM9E-S ARM966E-S
SIMD Instructions
6
Multi-processing
V6 Memory architecture (VMSA)
Unaligned data
support
ARM1136EJ-S
ARM系列产品命名规则
ARM 926EJ-S
ARM体系结构的特点
• 1) RISC型处理器结构
– (LOAD/STORD, I-cache, D-cache)
• 2)Thumb指令集 (32/16) • 3)多处理器状态模式 (7) • 4)两种处理器工作状态(2) • 5)嵌入式在线仿真调试(ICE-RT ,JTAG) • 6)灵活方便的协处理器接口 (16个) • 7)低电压功耗的设计
ARM体系结构的发展
Halfword
4
1
and signed halfword /
byte support
System
2
mode
SA-110 SA-1110
3
Early ARM architectures
Thumb instruction set
ARM7TDMI
4T
ARM9TDMI
ARM720T
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一编ARM编程模式1. Thumb指令集是ARM指令集的重编码的子集,相较于ARM指令集,Thumb指令集有两个不足:1)Thumb的代码执行相同的任务需要相较ARM代码更多的指令数,故不适合一些要求最大化执行时间效率的程序;2)Thumb中不包含一些异常处理需要使用的代码,故不适用编写一些高层次的异常处理代码2. ARM是一个RISC(精简指令集计算机),包含以下一些特性:1) 一个大型统一的寄存器表2) load/store结构,即所有数据操作都仅基于寄存器,而非直接基于内存;3) 简单寻址模式,即所有load/store寻址仅依靠寄存器内容和指令域决定;4) 统一和定长的指令格式,简化了指令的解码。
3. ARM有七种处理器模式,分别为:User(用户模式,即正常指令执行模式),FIQ(快速中断模式),IRQ(通用中断处理模式),Supervisor(超级用户模式,即操作系统保护模式),Abort(中止模式,实现内存或虚拟内存的保护),Undefined(未定义模式),System(系统模式,执行特权的系统进程)。
模式之间的切换可以通过软件控制或外部的中断或异常引起。
4. 正常的应用程序均在User(用户模式)下运行,此时无法获取一些受限的系统资源,也不可以任意切换处理器模式,除非有异常发生。
5. 除了User外的其他六个均为特权模式,他们可以获取各类系统资源,并能实现相互切换。
其中除System外的五个为异常模式。
6. ARM总计拥有37个寄存器,其中31个通用的32-bit寄存器,还有6个32-bit状态寄存器。
而在任意时刻,仅有其中的16个通用寄存器是可见的。
7. ARM体系结构中可见的寄存器为R0-R15,可分成三类:未堆积(unbanked)寄存器R0-R7,堆积(banked)寄存器R8-R14和程序计数器R15。
8. R0-R7为所有模式共享,所有模式共用这8个寄存器。
9. R8-R14为堆积寄存器,其又分成两类。
一类是R8-R12,分为两组,一组是FIQ模式专用,另一组是其他六种模式共用。
另一类是R13和R14,分为六组,分别是User和System共用一组,其他五种异常处理器模式各保有一组R13和R14。
R13和R14一般都用来做特殊的用途,其中R13为堆栈指针(SP);R14为链接寄存器,有两种特殊的功能,一种是发生子程序调用时保存子程序返回地址,另一种是异常发生时保存异常返回地址。
10. PC(R15)保存的是程序计数器,为当前指令的地址+8字节。
同时,由于ARM指令是字对齐的,所以PC的最低两个位bit[0:1]一般为0。
一个例外是当STR或者STM指令保存R15时,则保存的即可能是当前指令地址+8字节,也可能是当前指令地址+12字节,至于是保存8字节的offset还是12字节的offset,则是由实现来确定的。
基于这个原因,应该要尽量避免使用STR或STM指令保存R15。
11. 程序状态寄存器分成CPSR(当前程序状态寄存器)和SPSR(备份程序状态寄存器)。
CPSR所有模式共用,而SPSR则是五个异常模式各有一个。
12. 程序状态寄存器中有两类信息,一类是程序控制码标志,一类是程序控制位。
除此两类使用的位外其他为保留位。
13. 程序状态寄存器中的程序控制码标志主要包含有N标志(负数标志)、Z标志(零标志)、C标志(进位标志)、V标志(溢出标志)和Q标志(DSP指令溢出或饱和标志)。
其中C 标志(进位标志)有四种情况:第一种是加法类指令,若产生进位则C标志置1;第二种是减法类指令,若有借位则置0,否则为1;第三种是移位指令,则C标志为被最后移出的位;最后一种是其他指令,C标志不产生变化。
V标志也分成两种情况:一种是加法或减法类指令,如果发生有符号溢出,则V标志置1;另一种是其他指令,V标志不变。
14. 程序状态寄存器中的程序控制位在CPSR或SPSR的最低八位,包含有I标志(IRQ中断使能)、F标志(FIQ中断使能)、T标志(ARM或Thumb指令选择位,T=1时是Thumb 指令模式)和M[4:0]模式位。
15. 异常是由导致处理器去处理某个事务的内部或外部的源产生的。
在异常处理前的处理器状态应该被保存,这样当异常处理完毕后,系统可以回来原来的处理器状态。
在同一时刻,可以有不止一个的异常产生。
16. ARM共支持七种类型的异常。
当异常发生时,系统会条转到对应某类异常的固定存储地址来进行执行。
这些固定的地址被称作异常向量。
一般它们占据了0x00000000-0x0000001C 的地址空间(高向量模式为0xFFFF0000-0xFFFF001C),其中地址0x00000014(高向量模式为0xFFFF0014)被保留做未来扩充使用。
17. ARM支持的异常是有优先级的,其中SWI(软件中断)和未定义指令不会同时发生,故此两种异常有相同的优先级。
中断优先级保证了在多个异常同时发生的情况下,系统将先进入高优先级异常的执行。
18. ARM支持两种不同的异常向量模式,即正常向量模式和高向量模式。
正常向量模式的地址空间是0x00000000-0x0000001C,而高向量模式的地址空间为0xFFFF0000-0xFFFF001C。
高向量模式需要硬件的支持,而ARM的CP15的Register 1的bit[13]提供了对正常向量模式和高向量模式的配置。
19. ARM支持的内存模式有大端和小端两种。
小端是指对齐位置的字节是对应的字节中的最小有效字节。
而大端是指对齐位置的字节是对应的字节中的最大有效字节。
大小端的设置可通过配置CP15的Register 1的bit[7]来实现。
20. ARM架构中要求指令和数据对齐,即ARM指令的地址最低两位bit[1:0]均为0(Thumb 指令bit[1]为0),而取32位数据时最低两位也应对齐。
如果出现非对齐,则可能的情况有非对齐指令预取和非对齐数据获取。
非对齐指令预取即R15中的地址是一个非对齐的地址,如果出现此情况,可能导致两种结果,一个是出现不可预测的情况,另一个则是忽略最低位的地址取指令。
而load/store类的指令读取了一个非对齐的内存地址,可能出现三种结果:第一是不可预测的情况;第二是忽略最低位实现读取;第三是对忽略最低位,取出数据,并将最低位作为控制位,实现对读取出的数据的旋转操作(仅限于LDR和SWP指令)。
21. ARM架构中PC(R15)保存的是当前指令地址+8(Thumb模式下为当前指令地址+4),原因是ARM内核会预取两条指令,因此PC会指向当前指令的后两条指令。
同时ARM架构支持跳转预测,即当发现跳转指令时,下面预取的指令既可能是跳转指令后接的指令,也可能是跳转目标地址的指令。
22. 理论上,存在这样的情况,即当ARM内核预取了指令后,存储中的对应指令却被修改了。
对于这种情况,ARM忽视这种变化,仍然执行已经预取的指令。
如果第二次再运行到此位置,则将执行修改的后的指令。
23. ARM体系结构中标准的实现I/O功能的方式是使用存储映射I/O(memory-mapped I/O)。
这种方式提供了特殊的一些存储地址,当对这些存储地址实施load或store操作,即实现了对应的I/O功能。
第二编ARM指令集1. 一条ARM指令的最高四位bit[31:28]为条件域(condition field),根据其值的不同来确定当前指令对CPSR中的N、Z、C和V标志的设置与否。
2. ARM指令集支持一个向前或向后32M范围内跳转的Branch指令。
如果是Branch and Link 指令,则除了支持向前或向后的32M范围跳转外,还能将跳转指令的下一条指令地址(返回地址)压入R14(LR)。
而在ARMv4以上支持T的版本中,还有Branch and Exchange指令,此指令可以拷贝通用寄存器Rm的值到PC中,而若其bit[0]为0,则进行ARM至Thumb 的切换。
3. ARM指令集中包含了状态寄存器获取指令MSR和MRS用来对CPSR和SPSR进行操作。
同时ARM指令集还提供了对协处理器的操作指令MCR和MRC。
4. SWI提供了软件中断的功能,此指令的bit[23:0]为一个立即数,ARM处理器会忽略这个立即数,但这个立即数可以提供异常处理程序使用。
第三编ARM寻址模式ARM总共支持五大类的寻址模式,分别是:数据处理操作模式(Data-Processing Operands)、加载和保存字或无符号字节模式(Load and Store Word or Unsigned Byte)、混合的加载和保存模式(Miscellaneous Loads and Stores)、多重的加载和保存模式(Load and Store Multiple)以及协处理器的加载和保护模式(Load and Store Coprocessor)。
第一节数据处理操作模式1. 数据处理操作模式的寻址从指令角度可以分为三类:1)立即数寻址,指令格式如下2)立即数位移寻址:3)寄存器位移寻址:2. 通用的数据处理操作模式的语法是:<opcode> {<cond>} {S} <Rd>, <Rn>, <shifter_operand>其中<shifter_operand>有11种可选属性,分别为1)#<immediate>属于立即数寻址类2)<Rm>属于立即数位移寻址类,是其的一种特殊形式,即直接根据<Rm>的值进行寻址,指令中的shift和shift_imm对应位均为03)<Rm>, LSL #<shift_imm>属于立即数位移寻址类,是根据<shift_imm>对<Rm>中的值进行逻辑(不带进位)左移位4)<Rm>, LSL <Rs>属于寄存器位移寻址类,用<Rs>的值乘以<Rm>的值来达到对<Rm>的值进行逻辑左位移的效果5)<Rm>, LSR #<shift_imm>属于立即数位移寻址类,是根据<shift_imm>对<Rm>中的值进行逻辑右移位6)<Rm>, LSR <Rs>属于寄存器位移寻址类,用<Rs>的值除以<Rm>的值来达到对<Rm>的值进行逻辑右位移的效果7)<Rm>, ASR #<shift_imm>属于立即数位移寻址类,是根据<shift_imm>对<Rm>中的值进行算术(带进位)右移位8)<Rm>, ASR <Rs>属于寄存器位移寻址类,用<Rs>的值对<Rm>的值进行算术右移位9)<Rm>, ROR #<shift_imm>属于立即数位移寻址类,根据<shift_imm>对<Rm>中的值进行右旋转10)<Rm>, ROR <Rs>属于寄存器位移寻址类,用<Rs>的值对<Rm>的值进行右旋转11)<Rm>, RRX属于寄存器位移寻址类,是其的一种特殊形式,根据CPSR中的Carry Flag的值来对<Rm>的值进行右旋转第二节加载和保存字或无符号字节模式1. 加载和保存字或无符号字节模式从指令角度可以分为三类:1)立即数偏移/索引2)寄存器偏移/索引3)按比例的寄存器偏移/索引2. 通用的加载和保存字或无符号字节模式的语法是:LDR|STR{<cond>} {B} {T} <Rd>, <addressing_mode>其中<addressing_mode>有九种可选属性,分别为:1)[<Rn>, #+/-<offser_12>]属于立即数偏移/索引类,寻址模式通过计算对基寄存器Rn加上或减去一个12位立即数偏移来计算寻址地址2)[<Rn>, +/-<Rm>]属于寄存器偏移/索引类,寻址模式通过计算对基寄存器Rn加上或减去索引寄存器Rm的值来计算寻址地址3)[<Rn>, +/-<Rm>, <shift> #<shift_imm>]属于按比例的寄存器偏移/索引类,寻址模式通过计算对基寄存器Rn加上或减去对索引寄存器Rm值的偏移或旋转的结果来计算寻址地址4)[<Rn>, #+/-<offset_12>]!属于立即数偏移/索引类,寻址模式通过计算对基寄存器Rn加上或减去一个12位立即数偏移来计算寻址地址,同时如果条件域中的值与CPSR中的对应位匹配,则新产生的地址会被写回Rn中5)[<Rn>, +/-<Rm>]!属于寄存器偏移/索引类,寻址模式通过计算对基寄存器Rn加上或减去索引寄存器Rm的值来计算寻址地址,同时如果条件域中的值与CPSR中的对应位匹配,则新产生的地址会被写回Rn中6)[<Rn>, +/-<Rm>, <shift> #<shift_imm>]!属于按比例的寄存器偏移/索引类,寻址模式通过计算对基寄存器Rn加上或减去对索引寄存器Rm值的偏移或旋转的结果来计算寻址地址,同时如果条件域中的值与CPSR中的对应位匹配,则新产生的地址会被写回Rn中7)[<Rn>], #+/-<offset_12>属于立即数偏移/索引类,寻址模式使用Rn的值作为当前存储获取的地址,同时如果条件域中的值与CPSR中的对应位匹配,则将基寄存器Rn加上或减去一个12位立即数偏移写回Rn中8)[<Rn>], +/-<Rm>属于寄存器偏移/索引类,寻址模式使用Rn的值作为当前存储获取的地址,同时如果条件域中的值与CPSR中的对应位匹配,则将基寄存器Rn加上或减去索引寄存器Rm的值的结果写回Rn中9)[<Rn>], +/-<Rm>, <shift> #<shift_imm>属于按比例的寄存器偏移/索引类,寻址模式使用Rn的值作为当前存储获取的地址,同时如果条件域中的值与CPSR中的对应位匹配,则将基寄存器Rn加上或减去对索引寄存器Rm 值的偏移或旋转的结果写回Rn中第三节混合的加载和保存模式1. 混合的加载和保存模式从指令角度可以分为两类:1)立即数偏移/索引2)寄存器偏移/索引2. 通用的混合的加载和保存模式的语法是:LDR | STR{<cond>}H|SH|SB|D <Rd>, <addressing_mode>其中<addressing_mode>有六种可选属性,分别为:1)[<Rn>, #+/-<offset_8>]属于立即数偏移/索引类,寻址模式通过计算对基寄存器Rn加上或减去一个8位立即数偏移来计算寻址地址2)[<Rn>, +/-<Rm>]属于寄存器偏移/索引类,寻址模式通过计算对基寄存器Rn加上或减去索引寄存器Rm的值来计算寻址地址3)[<Rn>, #+/-<offset_8>]!属于立即数偏移/索引类,寻址模式通过计算对基寄存器Rn加上或减去一个8位立即数偏移来计算寻址地址,同时如果条件域中的值与CPSR中的对应位匹配,则新产生的地址会被写回Rn中4)[<Rn>, +/-<Rm>]!属于寄存器偏移/索引类,寻址模式通过计算对基寄存器Rn加上或减去索引寄存器Rm的值来计算寻址地址,同时如果条件域中的值与CPSR中的对应位匹配,则新产生的地址会被写回Rn中5)[<Rn>], #+/-<offset_8>属于立即数偏移/索引类,寻址模式使用Rn的值作为当前存储获取的地址,同时如果条件域中的值与CPSR中的对应位匹配,则将基寄存器Rn加上或减去一个8位立即数偏移写回Rn 中6)[<Rn>], +/-<Rm>属于寄存器偏移/索引类,寻址模式使用Rn的值作为当前存储获取的地址,同时如果条件域中的值与CPSR中的对应位匹配,则将基寄存器Rn加上或减去索引寄存器Rm的值的结果写回Rn中第四节多重的加载和保存模式1. 多重的加载和保存模式的指令格式是:此类寻址模式会产生一个地址范围,分别为<start_address>和<end_address>。