Download presentation
Presentation is loading. Please wait.
Published by佳苑 苍 Modified 7年之前
1
第3章 体系结构与指令系统 本章将对ARM技术进行全面论述,通过本章的学习,使大家对ARM技术有个全面的了解和掌握。了解ARM体系结构、编程模式、异常、片上总线等内容;掌握ARM指令集及其寻址模式。
2
本章的主要内容为: 3.1 ARM体系结构的发展历史和技术特征 3.2 ARM体系结构不同版本的发展概述 3.3 Thumb技术介绍
3
本章的主要内容为: 3.8 ARM组织结构简介 3.9 ARM存储器接口及存储器层次 3.10 ARM协处理器
3.11 ARM片上总线AMBA 3.12 ARM核综述 3.13 ARM指令集与寻址模式 3.14 Xscale pxa270
4
2.1 ARM体系结构的发展历史和技术特征 2.1.1 ARM发展的历程 2.1.2 ARM体系结构的技术特征
5
2.1.1 ARM发展的历程 最近10多年来ARM技术的突出成果表现在:
使用“Thumb”的新型压缩指令格式,使得应用系统开发可降低系统成本和功耗; ARM9、ARM10、Strong-ARM和ARM11等系列处理器的开发,显著地提高了ARM的性能,使得ARM技术在面向高端数字音、视频处理等多媒体产品的应用中更加广泛; 更好的软件开发和调试环境,加快用户产品开发; 更为广泛的产业联盟使得基于ARM的嵌入式应用领域更加广阔; 嵌入在复杂SoC中、基于ARM核的调试系统代表着当今片上调试技术的前沿。
6
ARM发展的历程 第一片ARM处理器是1983年10月到1985年4月间在位于英国剑桥的Acorn Computer公司开发 。
7
ARM发展的历程 在ARM的发展历程中,从ARM7开始,ARM核被普遍认可和广泛使用 。 1995年 StrongARM 问世 。
XScale是下一代StrongARM芯片的发展基础 。 ARM10TDMI是ARM处理器核中的高端产品 。 ARM11是ARM家族中性能最强的一个系列 。
8
ARM发展的历程 ARM技术还将不断发展。在嵌入式领域,ARM已取得了极大的成功,造就了IP核商业化、市场化的神话,迄今为止,还没有任何商业化的IP核交易和使用达到ARM的规模。据最新统计,全球有103家巨型IT公司在采用ARM技术,20家最大的半导体厂商中有19家是ARM的用户,包括德州仪器,意法半导体,Philips,Intel等。ARM系列芯片已经被广泛的应用于移动电话、手持式计算机以及各种各样的嵌入式应用领域,成为世界上销量最大的32位微处理器。
9
2.2 ARM体系结构的技术特征 ARM的体系结构采用了若干Berkeley RISC处理器设计中的特征
Load/store体系结构 固定的32位指令 3地址指令格式 也放弃了其它若干Berkeley RISC特征 所有的指令单周期执行
10
2.2 ARM体系结构不同版本的发展概述 2.2.1 ARM体系结构的基本版本 2.2.2 ARM体系结构的演变
11
2.2.1 ARM体系结构的基本版本 版本1,本版本包括下列指令: 乘法指令之外的基本数据处理指令;
基于字节,字和多字的存储器访问操作指令(Load/Store); 子程序调用指令BL在内的跳转指令; 完成系统调用的软件中断指令SWI。
12
ARM体系结构的基本版本 版本2 ,与版本1相比版本2(2a)增加了下列指令: 乘和乘加指令; 支持协处理器的指令;
对于FIQ模式,提供了额外的影子寄存器; SWP指令。
13
ARM体系结构的基本版本 版本3较以前的版本发生了大的变化
地址空间扩展到了32位,但除了版本3G外的其他版本是向前兼容的,也支持26位的地址空间; 分开的当前程序状态寄存器CPSR(Current Program Status Register)和备份的程序状态寄存器SPSR(Saved Program Status Register),SPSR用于在程序异常中断时保存被中断的程序状态; 增加了两种异常模式,使操作系统代码可以方便地使用数据访问中止异常、指令预取中止异常和未定义指令异常; 增加了MRS指令和MSR指令用于完成对CPSR和SPSR寄存器的读写。 修改了原来的从异常中返回的指令。
14
ARM体系结构的基本版本 版本4。与版本3相比,版本4增加了下列指令 有符号、无符号的半字和有符号字节的load和store指令。
增加了T变种,处理器可以工作于Thumb状态,在该状态下的指令集是16位的Thumb指令集。 增加了处理器的特权模式。在该模式下,使用的是用户模式下的寄存器。
15
ARM体系结构的基本版本 版本5主要由两个变型版本5T、5TE组成 相比与版本4,版本5的指令集有了如下的变化:
提高了T变种中ARM/Thumb混合使用的效率。 增加前导零记数(CLZ)指令,该指令可使整数除法和中断优先级排队操作更为有效; 增加了BKPT(软件断点)指令; 为协处理器设计提供了更多的可供选择的指令; 更加严格地定义了乘法指令对条件码标志位的影响。
16
ARM体系结构的基本版本 ARM体系版本6是2001年发布的。新架构v6在降低耗电量的同时还强化了图形处理性能。通过追加有效进行多媒体处理的SIMD功能,将语音及图像的处理功能提高到了原机型的4倍。ARM体系版本6首先在2002年春季发布的ARM11处理器中使用。除此之外,v6还支持多微处理器内核。
17
ARM体系结构的基本版本 ARM体系结构总结 核 体系结构 ARM1 V1 ARM2 V2 ARM2aS,ARM3 V2a
ARM7TDMI,ARM710T,ARM720T ARM740T V4T Strong ARM,ARM8,ARM810 V4 ARM9TDMI,ARM920T,ARM940T ARM9E-S V5TE ARM10TDMI,ARM1020E ARM11,ARM1156T2-S,ARM1156T2F-S,ARM1176JZ-S,ARM11JZF-S V6
18
2.2.2 ARM体系结构的演变 1)Thumb指令集(T变种)
Thumb指令集是把32位的ARM指令集的一个子集重新编码后而形成的一个特殊的16位的指令集 2)长乘指令(M变种) 长乘指令是一种生成64位相乘结果的乘法指令(此指令为ARM指令),M变种增加了两条长乘指令
19
ARM体系结构的演变 3)增强型DSP指令(E变种) E变种的ARM体系增加了一些增强处理器对典型的DSP算法处理能力的附加指令。
4)Java加速器Jazelle(J变种) ARM的Jazelle技术是Java语言和先进的32位RISC芯片完美结合的产物 。 5)ARM媒体功能扩展(SIMD变种)
20
2.2.3 ARM体系结构的命名规则 表示ARM/Thumb体系版本的命名格式的ARM/Thumb体系版本由下面几部分组成的:
基本字符串ARMv。 基本字符串后为ARM指令集版本号,目前是1-6的数字字符。 ARM指令集版本号后为表示所含变种的字符。由于在ARM体系版本4以后,M变种成为系统的标准部件,所以字符M通常也不单独列出来。 最后使用的字符x表示排除某种功能。
21
2.3 Thumb技术介绍 ARM的RISC体系结构的发展中已经提供了低功耗、小体积、高性能的方案。而为了解决代码长度的问题,ARM体系结构又增加了T变种,开发了一种新的指令体系,这就是Thumb指令集,它是ARM技术的一大特色。 2.3.1Thumb的技术概述 2.3.2Thumb的技术实现 2.3.3Thumb技术的特点
22
2.3.1 Thumb的技术概述 Thumb是ARM体系结构的扩展。它有从标准32位ARM指令集抽出来的36条指令格式,可以重新编成16位的操作码。这能带来很高的代码密度 ARM7TDMI是第一个支持Thumb的核,支持Thumb的核仅仅是ARM体系结构的一种发展的扩展,所以编译器既可以编译Thumb代码,又可以编译ARM代码 支持Thumb的ARM体系结构的处理器状态可以方便的切换、运行到Thumb状态,在该状态下指令集是16位的Thumb指令集 。
23
2.3.2 Thumb技术的特点 在性能和代码大小之间取得平衡,在需要较低的存储代码时采用Thumb指令系统,但有比纯粹的16位系统有较高的实现性能,因为实际执行的是32位指令,用Thumb指令编写最小代码量的程序,却取得以ARM代码执行的最好性能
24
Thumb技术的特点 与ARM指令集相比.Thumb指令集具有以下局限
Thumb指令集没有包含进行异常处理时需要的一些指令,因此在异常中断时,还是需要使用ARM指令,这种限制决定了Thumb指令需要和ARM指令配合使用。
25
2.4 ARM处理器工作状态 ARM处理器核可以工作在以下2种状态 1) ARM状态 32位,ARM状态下执行字对准的32位ARM指令;
2)Thumb状态 16位,Thumb状态下执行半字对准的16位Thumb指令。在Thumb状态下,程序计数器PC使用位1选择另一个半字。
26
ARM处理器工作状态 在程序执行的过程中,处理器可以在两种状态下切换 。 ARM和Thumb之间状态的切换不影响处理器的模式或寄存器的内容。
27
2.5 ARM处理器工作模式 CPSR(当前程序状态寄存器)的低5位用于定义当前操作模式 , 如图示:
28
ARM处理器工作模式 除用户模式外的其他6种模式称为特权模式 。 特权模式中除系统模式以外的5种模式又称为异常模式,即 :
FIQ(Fast Interrupt Request) IRQ(Interrupt ReQuest) SVC(Supervisor) 中止(Abort) 未定义(Undefined)
29
2.6 ARM寄存器组成 2.6.1ARM寄存器组成概述 2.6.2ARM状态下的寄存器组织 2.6.3Thumb状态下的寄存器组织
30
2.6.1 ARM寄存器组成概述 ARM处理器总共有37个寄存器,可以分为以下两类寄存器 : 1) 31个通用寄存器 : 2)6个状态寄存器
R0~R15; R13_svc、R14_svc; R13_abt、R14_abt; R13_und、R14_und; R13_irq、R14_irq; R8_frq-R14_frq。 2)6个状态寄存器 CPSR;SPSR_svc、SPSR_abt、SPSR_und、SPSR_irq和SPSR_fiq 。
31
2.6.2ARM状态下的寄存器组织 1)ARM状态的寄存器简介: ARM状态下的寄存器组织:
32
ARM状态下的寄存器组织 2) ARM状态的通用寄存器 不分组寄存器(The unbanked registers) R0~R7
分组寄存器(The banked registers): R8~R14 程序计数器:R15(PC)
33
ARM状态下的寄存器组织 不分组寄存器R0~R7
未分组寄存器没有被系统用于特别的用途,任何可采用通用寄存器的应用场合都可以使用未分组寄存器,但必须注意对同一寄存器在不同模式下使用时的数据保护 。
34
ARM状态下的寄存器组织 分组寄存器R8-R14 : 分组寄存器R13、R14 分组寄存器R8-R12:
FIQ模式分组寄存器R8~R12 。 FIQ以外的分组寄存器R8~R12 。 分组寄存器R13、R14 寄存器R13通常用做堆栈指针SP 。 寄存器R14用作子程序链接寄存器(Link Register-LR),也称为LR。
35
ARM状态下的寄存器组织 程序计数器R15 : 寄存器R15被用作程序计数器,也称为PC 。
36
ARM状态下的寄存器组织 3)ARM程序状态寄存器
所有处理器模式下都可以访问当前的程序状态寄存器CPSR。CPSR包含条件码标志、中断禁止位、当前处理器模式以及其它状态和控制信息。 在每种异常模式下都有一个对应的物理寄存器——程序状态保存寄存器SPSR。当异常出现时,SPSR用于保存CPSR的状态,以便异常返回后恢复异常发生时的工作状态。
37
ARM状态下的寄存器组织 CPSR和SPSR的格式
38
2.6.3Thumb状态下的寄存器组织 Thumb状态下的寄存器集是ARM状态下寄存器集的子集。程序员可以直接访问8个通用的寄存器(R0~R7),程序计数器PC、堆栈指针SP、连接寄存器LR和当前状态寄存器CPSP。每一种特权模式都各有一组SP,LR和SPSR。
39
2.7 ARM的异常中断 在ARM体系结构中,异常中断用来处理软件中断、未定义指令陷阱(它不是真正的“意外”事件)及系统复位功能(它在逻辑上发生在程序执行前而不是在程序执行中,尽管处理器在运行中可能再次复位)和外部事件,这些“不正常”事件都被划归“异常”,因为在处理器的控制机制中,它们都使用同样的流程进行异常处理。
40
ARM的异常中断 ARM的异常中断响应过程; 从异常中断处理程序中返回 ; 异常中断向量表; 异常中断的优先级 ;
41
ARM的异常中断响应过程 ARM处理器对异常中断的响应过程如下: 将CPSR的内容保存到将要执行的异常中断对应的SPSR中 。
给程序计数器(PC)强制赋值 。
42
ARM的异常中断响应过程 每个异常模式对应有两个寄存器R13_<mode>、R14_<mode>分别保存相应模式下的堆栈指针、返回地址;堆栈指针可用来定义一个存储区域保存其它用户寄存器,这样异常处理程序就可以使用这些寄存器。 FIQ模式还有额外的专用寄存器R8_fiq~R12_fiq,使用这些寄存器可以加快快速中断的处理速度。
43
从异常中断处理程序中返回 从异常中断处理程序中返回时,需要执行 以下四个基本操作 :
所有修改过的用户寄存器必须从处理程序的保护堆栈中恢复(即出栈)。 将SPSR_mode寄存器内容复制到CPSR中,使得CPSR从相应的SPSR中恢复,即恢复被中断的程序工作状态。 根据异常类型将PC变回到用户指令流中相应指令处。 最后清除CPSR中的中断禁止标志位I/F。
44
异常中断向量表 中断向量表中指定了各异常中断与其处理程序的对应关系 。
每个异常中断对应的中断向量表的4个字节的空间中存放一个跳转指令或者一个向PC寄存器中赋值的数据访问指令 。 存储器的前8个字中除了地址0x 之外,全部被用作异常矢量地址 。
45
异常中断的优先级 当几个异常中断同时发生时,在ARM中通过给各异常中断赋予一定的优先级来实现处理次序 : 复位(最高优先级);
数据异常中止; FIQ; IRQ; 预取指异常中止; SWI、,未定义指令(包括缺协处理器)。
46
2.8 ARM典型流水线技术简介 2.8.1三级流水线ARM的组织 2.8.2五级流水线ARM的组织
47
2.8.1三级流水线ARM的组织 1)ARM的3级流水线介绍 到ARM7为止的ARM处理器使用的简 单3级流水线分别为 : 取指级 ;
译码级 ; 执行级 ;
48
三级流水线ARM的组织 2)ARM 3级流水线下PC的行为
在3级流水线的执行过程中,当通过R15寄存器直接访问PC时,必须考虑到此时流水线的执行过程的真实情况 三级流水线的PC行为
49
2.8.2 五级流水线ARM的组织 使用5级流水线的ARM处理器包含下面5个流水线级 : 取指 译码 执行 缓冲\数据 回写
50
2.9 ARM存储器接口及存储器层次 多级存储器使它包括一个容量小但速度快的从存储器和一个容量大但速度慢的主存储器,根据典型程序的实验统计,这个存储器系统的外部行为在绝大部分时间象一个即大又快的存储器。这个容量小但速度快的元件是Cache,它自动地保存处理器经常用到的指令和数据的拷贝。 本节首先对ARM支持的存储数据类型和处理器中数据存储格式进行介绍,在此基础上介绍了ARM存储器的接口设计,主要包括存储器接口、Cache、MMU和保护单元,建立起ARM处理器的整个存储体系的概念和设计方法。
51
ARM存储器接口及存储器层次 2.9.1 ARM存储数据类型和存储格式 2.9.2 ARM的存储器层次简介 2.9.3 ARM存储系统简介
52
2.9.1ARM存储数据类型和存储格式 ARM处理器支持以下6种数据类型 : 8位有符号和无符号字节。
16位有符号和无符号半字,它们以两字节的边界定位。 32位有符号和无符号字,它们以4字节的边界定位。
53
ARM存储数据类型和存储格式 存储器组织 在以字节为单位寻址的存储器中有“小端”和“大端”两种方式存储字,这两种方式是根据最低有效字节与相邻较高有效字节相比是存放在较低的还是较高的地址来划分的,两种存储方式如图所示。
54
2.9.2 ARM的存储器层次简介 寄存器组 片上RAM 片上Cache 主存储器 硬盘
55
2.10 ARM协处理器 ARM通过增加硬件协处理器来支持对其指令集的通用扩展,通过未定义指令陷阱支持这些协处理器的软件仿真。简单的ARM核提供板级协处理器接口,因此协处理器可以作为一个独立的元件接入。 最常使用的协处理器是用于控制片上功能的系统协处理器,例如控制ARM720上的高速缓存Cache和存储器管理单元MMU等。ARM也开发了浮点协处理器,也可以支持其它的片上协处理器。ARM体系结构支持通过增加协处理器来扩展指令集的机制。
56
2.11 ARM片上总线AMBA 先进的微控制器总线体系结构 AMBA是ARM公司公布的总线标准
AHB(Advanced High-performance Bus):用于连接高性能系统模块。它支持突发数据传输方式及单个数据传输方式,所有时序参考同一个时钟沿。 ASB(Advanced System Bus):用于连接高性能系统模块,它支持突发数据传输模式。 APB(Advance Peripheral Bus):是一个简单接口支持低性能的外围接口。
57
2.12 ARM核 ARM处理器核当前有6 个系列产品: ARM7 ARM9 ARM9E ARM10E, SecurCore ARM11
Intel公司推出的: StrongARM XScale
58
ARM核综述 2.12.1 ARM7系列核介绍 2.12.2 ARM9系列核介绍 2.12.3 ARM10系列核
StrongARM和XScale系列核 SecurCore系列核
59
ARM7系列核介绍 ARM7TDMI是ARM公司最早为业界普遍认可且得到了最为广泛应用的处理器核,特别是在手机和PDA中,随着ARM技术的发展,它已是目前最低端的ARM核。 ARM7:32位ARM体系结构4T版本; T:“Thumb”16位压缩指令集; D:支持片上Debug(调试),使处理器能够停止以响应调试请求; M:增强型Multiplier,与前代相比具有较高的性能且产生64位的结果; I:“EmbeddedICE”硬件以支持片上断点和观察点。
60
ARM7系列核介绍 1)ARM7TDMI组织结:ARM7TDMI重要的特性有
支持Thumb指令集,可降低系统开销; 32×8 DSP 乘法器; 32位寻址空间- 4GB 线性地址空间; 它包含了EmbeddedICE模块以支持嵌入式系统调试; 调试硬件由JTAG测试访问端口访问,因此JTAG控制逻辑被认为是处理器核的一部分。 广泛的ARM 和第三方支持,并与 ARM9 Thumb 系列 ARM10 Thumb 系列和StrongARM处理器相兼容。
61
ARM7系列核介绍 2)ARM7TDMI硬件接口
按接口信号的功能划分为存储器接口、MMU接口、片上调试、JTAG边界扫描扩展以及时钟接口等十四类接口信号。各接口信号包括接口信号和接口控制信号 ARM7TDMI核的外围硬件接口信号图
62
2.12.2ARM9系列核介绍 ARM8核是从1993年到1996年开发的,并开发了具有片上Cache及存储器管理单元高性能ARM CPU芯片以满足比ARM7的3级流水线更高性能的ARM核的需求。 ARM9TDMI将流水线的级数从ARM7TDMI的3级增加到5级,并使用分开的指令与数据存储器的Harvard体系结构。ARM9TDMI的性能在相同工艺条件下近似达到ARM7TDMI两倍
63
ARM9系列核介绍 1)ARM9TDMI技术特点 支持Thumb指令集; 含有EmbeddedICE模块支持片上调试;
通过采用5级流水线以增加最高时钟速率; 分开的指令与数据存储器端口以提高处理器性能。
64
ARM9系列核介绍 2)ARM9TDMI组织 ARM9内核采用了与后面要讲到的Strong ARM相同的5级流水线。ARM9TDMI与StrongARM核的主要区别在于StrongARM有一个与寄存器读出级并行操作的专用的转移加法器进行转移地址计算,而ARM9TDMI使用数据路径中的ALU来计算转移目标地址。
65
ARM9系列核介绍 3)Thumb解码和存储器读写 4)协处理器支持 5)片上调试 6)低电压操作 7)ARM9TDMI应用
8)ARM9E-S及ARM946E-S和ARM966E-S
66
ARM10系列核 ARM10TDMI属于ARM处理器核中的高端处理器核,ARM10TDMI的性能在相同工艺条件下近似达到也以ARM9TDMI的两倍性能工作。ARM1020E/ARM10200是基于ARM10TDMI核设计的高性能CPU核。 增加最高时钟速率。
67
StrongARM和XScale系列核 1995年,ARM、Apple、DEC公司联合声明将开发一种应用于PDA的高性能、低功耗、基于ARM体系结构的StrongARM微处理器。 StrongARM主要特点有: 具有寄存器前推的5级流水线; 除64位乘法、多寄存器传送和存储器/寄存器交换指令外,其它所有普通指令均是单周期指令; 16KB、32路相联的指令Cache,每行32字节; 16KB、32路相联的写回式数据Cache,每行32字节; 分开的32数据项的指令和数据地址变换后备缓冲器;
68
StrongARM和XScale系列核 8数据项的写缓冲器,每个数据项16个字节; 低功耗的伪静态操作。
StrongARM的乘法部件很有特色。不论处理器的时钟速率有多高,乘法器以每周期计算12位,用1~3个时钟周期计算两个32位操作数的乘积。对于数字信号处理性能要求很高的应用来说,StrongARM的高速乘法器有很大的潜力。 微处理器使用系统控制协处理器CP15来管理片上MMU和Cache资源,并且集成了JTAG边界扫描测试电路以支持印制板连接测试。
69
StrongARM和XScale系列核 StrongARM的五级流水线 取指(从指令Cache)。 指令译码及寄存器读;转移目标计算及执行。
移位及ALU操作,包括数据传送的存储器地址计算。 数据Cache访问 结果写回到寄存器文件 寄存器前推通路将中间结果传给下一条指令,以避免读后写冒险引起的寄存器互锁停顿。 从下一条指令的取指级传送PC+4的PC通路给出当前指令的PC+8,作为r15并用于转移目标计算。
70
StrongARM和XScale系列核 Intel XScale系列处理器核是基于ARMv5TE体系结构的,它提供了从手持互联网设备到互联网基础设施产品全面解决方案,支持16位Thumb指令和DSP扩充。基于XScale技术开发的系列微处理器,由于超低功率与高性能的组合使Intel XScale适用于广泛的互联网接入设备
71
SecurCore系列核 SecurCore系列微处理器专为安全需要而设计,提供了完善的32位RISC技术的安全解决方案,因此,SecurCore系列微处理器除了具有ARM体系结构的低功耗、高性能的特点外,还具有其独特的优势,即提供了对安全解决方案的支持。 带有灵活的保护单元,以确保操作系统和应用 数据的安全。 采用软内核技术,防止外部对其进行扫描探测。 可集成用户自己的安全特性和其他协处理器。
72
2.13 ARM指令集与寻址模式 1 ARM 微处理器指令的分类 2 ARM 微处理器指令的条件域 3 ARM 微处理器指令的寻址方式
73
ARM微处理器的指令系统 ARM微处理器指令的分类
跳转指令 数据处理指令 程序状态寄存器(PSR)处理指令 加载/存储指令 协处理器指令和异常产生指令
74
ARM微处理器指令表-1 ARM微处理器指令的分类 助记符 指令功能描述 ADC 带进位加法指令 ADD 加法指令 AND 逻辑与指令 B
跳转指令 BIC 位清零指令 BL 带返回的跳转指令 BLX 带返回和状态切换的跳转指令 BX 带状态切换的跳转指令
75
ARM微处理器指令表-2 ARM微处理器指令的分类 助记符 指令功能描述 CDP 协处理器数据操作指令 CMN 比较反值指令 CMP
比较指令 EOR 异或指令 LDC 存储器到协处理器的数据传输指令 LDM 加载多个寄存器指令 LDR 存储器到寄存器的数据传输指令 MCR ARM寄存器到协处理器寄存器数据传输
76
ARM微处理器指令表-3 ARM微处理器指令的分类 助记符 指令功能描述 MLA 乘加运算指令 MOV 数据传送指令 MRC
MRS 传送CPSR或SPSR的内容到通用寄存器 MSR 传送通用寄存器到CPSR或SPSR的指令 MUL 32位乘法指令 32位乘加指令 MVN 数据取反传送指令
77
ARM微处理器指令表-4 ARM微处理器指令的分类 助记符 指令功能描述 ORR 逻辑或指令 RSB 逆向减法指令 RSC
带借位的逆向减法指令 SBC 带借位减法指令 STC 协处理器寄存器写入存储器指令 STM 批量内存字写入指令 STR 寄存器到存储器的数据传输指令 SUB 减法指令
78
ARM微处理器指令表-5 ARM微处理器指令的分类 助记符 指令功能描述 SWI 软件中断指令 SWP 交换指令 TEQ 相等测试指令
TST 位测试指令
79
ARM微处理器指令的条件域 指令的条件域 当处理器工作在ARM状态时,几乎所有的指令均根据CPSR中条件码的状态和指令的条件域有条件的执行。当指令的执行条件满足时,指令被执行,否则指令被忽略。 每一条ARM指令包含4位的条件码,位于指令的最高4位[31:28]。条件码共有16种,每种条件码可用两个字符表示,这两个字符可以添加在指令助记符的后面和指令同时使用。例如,跳转指令B可以加上后缀EQ变为BEQ表示“相等则跳转”,即当CPSR中的Z标志置位时发生跳转。
80
指令的条件域表-1 ARM微处理器指令的条件域 条件码 后缀 标 志 含 义 0000 EQ Z置位 相等 0001 NE Z清零 不相等
0010 CS C置位 无符号数大于或等于 0011 CC C清零 无符号数小于 0100 MI N置位 负数 0101 PL N清零 正数或零 0110 VS V置位 溢出 0111 VC V清零 未溢出
81
指令的条件域表-2 ARM微处理器指令的条件域 条件码 后缀 标 志 含 义 1001 LS C清零Z置位 无符号数小于或等于 1010
GE N等于V 带符号数大于或等于 1011 LT N不等于V 带符号数小于 1100 GT Z清零且(N等于V) 带符号数大于 1101 LE Z置位或(N不等于V) 带符号数小于或等于 1110 AL 忽略 无条件执行
82
ARM指令的寻址方式 ARM指令系统支持如下几种常见的寻址方式: 立即寻址 寄存器寻址 寄存器间接寻址 基址变址寻址 多寄存器寻址 相对寻址
堆栈寻址
83
ARM微处理器指令的寻址方式 立即寻址 立即寻址也叫立即数寻址,这是一种特殊的寻址方式,操作数本身就在指令中给出,只要取出指令也就取到了操作数。这个操作数被称为立即数,对应的寻址方式也就叫做立即寻址。例如以下指令: ADD R0,R0,#1 /*R0←R0+1*/ ADD R0,R0,#0x3f /*R0←R0+0x3f*/ 在以上两条指令中,第二个源操作数即为立即数,要求以“#”为前缀,对于以十六进制表示的立即数,还要求在“#”后加上“0x”。
84
ARM微处理器指令的寻址方式 寄存器寻址 寄存器寻址就是利用寄存器中的数值作为操作数,这种寻址方式是各类微处理器经常采用的一种方式,也是一种执行效率较高的寻址方式。以下指令: ADD R0,R1,R2 /*R0←R1+R2*/ 该指令的执行效果是将寄存器R1和R2的内容相加,其结果存放在寄存器R0中。
85
寄存器间接寻址 寄存器间接寻址就是以寄存器中的值作为操作数的地址,而操作数本身存放在存储器中。例如以下指令:
ARM微处理器指令的寻址方式 寄存器间接寻址 寄存器间接寻址就是以寄存器中的值作为操作数的地址,而操作数本身存放在存储器中。例如以下指令: ADD R0,R1,[R2] /*R0←R1+[R2]*/ LDR R0,[R1] /*R0←[R1]*/ STR R0,[R1] /*[R1]←R0*/ 在第一条指令中,以寄存器R2的值作为操作数的地址,在存储器中取得一个操作数后与R1相加,结果存入寄存器R0中; 第二条指令将以R1的值为地址的存储器中的数据传送到R0中。 第三条指令将R0的值传送到以R1的值为地址的存储器中。
86
基址变址寻址 ARM微处理器指令的寻址方式
基址变址寻址就是将寄存器(该寄存器一般称作基址寄存器)的内容与指令中给出的地址偏移量相加,从而得到一个操作数的有效地址。变址寻址方式常用于访问某基地址附近的地址单元。采用变址寻址方式的指令常见有以下几种形式,如下所示: LDR R0,[R1,#4] ;R0←[R1+4] LDR R0,[R1,#4]! ;R0←[R1+4]、R1←R1+4 LDR R0,[R1] ,#4 ;R0←[R1]、R1←R1+4 LDR R0,[R1,R2] ;R0←[R1+R2] 在第一条指令中,将寄存器R1的内容加上4形成操作数的有效地址,从而取得操作数存入寄存器R0中。 在第二条指令中,将寄存器R1的内容加上4形成操作数的有效地址,从而取得操作数存入寄存器R0中,然后,R1的内容自增4个字节。 在第三条指令中,以寄存器R1的内容作为操作数的有效地址,从而取得操作数存入寄存器R0中,然后,R1的内容自增4个字节。 在第四条指令中,将寄存器R1的内容加上寄存器R2的内容形成操作数的有效地址,从而取得操作数存入寄存器R0中。
87
多寄存器寻址 ARM微处理器指令的寻址方式
采用多寄存器寻址方式,一条指令可以完成多个寄存器值的传送。这种寻址方式可以用一条指令完成传送最多16个通用寄存器的值。以下指令: LDMIA R0,{R1,R2,R3,R4} ;R1←[R0] ;R2←[R0+4] ;R3←[R0+8] ;R4←[R0+12] 该指令的后缀IA表示在每次执行完加载/存储操作后,R0按字长度增加,因此,指令可将连续存储单元的值传送到R1~R4。
88
ARM微处理器指令的寻址方式 相对寻址 与基址变址寻址方式相类似,相对寻址以程序计数器PC的当前值为基地址,指令中的地址标号作为偏移量,将两者相加之后得到操作数的有效地址。以下程序段完成子程序的调用和返回,跳转指令BL采用了相对寻址方式: BL NEXT ;跳转到子程序NEXT处执行 …… NEXT MOV PC,LR ;从子程序返回
89
ARM微处理器指令的寻址方式 堆栈寻址 堆栈是一种数据结构,按先进后出(First In Last Out,FILO)的方式工作,使用一个称作堆栈指针的专用寄存器指示当前的操作位置,堆栈指针总是指向栈顶。 当堆栈指针指向最后压入堆栈的数据时,称为满堆栈(Full Stack),而当堆栈指针指向下一个将要放入数据的空位置时,称为空堆栈(Empty Stack)。
90
ARM微处理器指令的寻址方式 堆栈寻址 根据堆栈的生成方式,又可以分为递增堆栈(Ascending Stack)和递减堆栈(Decending Stack),当堆栈由低地址向高地址生成时,称为递增堆栈,当堆栈由高地址向低地址生成时,称为递减堆栈。这样就有四种类型的堆栈工作方式: 满递增堆栈:堆栈指针指向最后压入的数据,且由低地址向高地址生成。 满递减堆栈:堆栈指针指向最后压入的数据,且由高地址向低地址生成。 空递增堆栈:堆栈指针指向下一个将要放入数据的空位置,且由低地址向高地址生成。 空递减堆栈:堆栈指针指向下一个将要放入数据的空位置,且由高地址向低地址生成
91
例子:ARM程序设计 ARM汇编:选择排序 详见:示例程序example/ADS_example/选择排序/selectSort
详见:示例程序example/ADS_example/冒泡排序/bubbleSort 其他示例
92
3.14 Xscale pxa270 (1) pxa270芯片总述及芯片特性概述 见Intel xscale datasheet
见电路原理图 (3) pxa270 GPIO控制
93
本章结束,谢谢!
Similar presentations