arm体系结构及编程模型

上传人:第*** 文档编号:51255601 上传时间:2018-08-13 格式:PPT 页数:53 大小:1.75MB
返回 下载 相关 举报
arm体系结构及编程模型_第1页
第1页 / 共53页
arm体系结构及编程模型_第2页
第2页 / 共53页
arm体系结构及编程模型_第3页
第3页 / 共53页
arm体系结构及编程模型_第4页
第4页 / 共53页
arm体系结构及编程模型_第5页
第5页 / 共53页
点击查看更多>>
资源描述

《arm体系结构及编程模型》由会员分享,可在线阅读,更多相关《arm体系结构及编程模型(53页珍藏版)》请在金锄头文库上搜索。

1、13C H A P T E RARM体系结结构 及编编程模型122 21 13 34 4ARM 处处理器的寄存器组织组织ARM处处理器的工作模式ARM微处处理器系列5 56 6ARM 异常处处理ARM处处理器的工作状态态ARM处处理器的存储储器格式23ARM微处理器系列 qARM7系列qARM9系列qARM9E系列qARM10E系列qSecurCore系列qIntel的Xscaleq其中,ARM7、ARM9、ARM9E和ARM10为 4个通用处理器系列,每一个系列提供一套相对独特的性能 来满足不同应用领域的需求。SecurCore系列专门为 安全要求较高的应用而设计。 34ARM7微处理器系列

2、 qARM7系列是低功耗的32位RISC处理器,最适合用 于对价位和功耗要求较高的消费类应用。ARM7系列有如 下特点: 具有嵌入式ICERT逻辑,调试开发方便;极低的功耗,适合对功耗要求较高的应用,如便携式产品;能够提供0.9MIPS/ MHz的三级流水线结构;兼容16位的Thumb指令集,代码密度高;对操作系统的支持广泛,如Windows CE、Linux、 Palm OS等;指令系统与ARM9系列、ARM9E系列和ARM10E系列 兼容,便于用户的产品升级换代;主频最高可达130M,高速的运算处理能力能胜任绝大多数 的复杂应用。45ARM7微处理器系列q主要应用领域:工业控制、Inter

3、net设备、网络 和调制解调器设备、移动电话等多种多媒体和嵌入式应用。qARM7系列微处理器包括如下几种类型的核: ARM7TDMI、ARM7TDMI-S、ARM720T、 ARM7EJ。其中,ARM7TMDI是目前使用最广泛的 32位嵌入式RISC处理器,属低端ARM处理器核。 TDMI的基本含义为:T:支持16位压缩指令集Thumb;D:支持片上Debug;M:内嵌硬件乘法器(Multiplier)I:嵌入式ICE,支持片上断点和调试点;56ARM微处理器的工作状态 q 从编程的角度看,ARM微处理器的工作状态一般有两种, 并可在两种状态之间切换:ARM状态,此时处理器执行32位的字对齐的

4、ARM 指令;Thumb状态,此时处理器执行16位的、半字对 齐的Thumb指令。 67ARM与THUMBq THUMB指令是ARM指令的子集q 可以相互调用,只要遵循一定的调用规则q Thumb指令与ARM指令的时间效率和空间效率关系为: 存储空间约为ARM代码的6070 指令数比ARM代码多约3040 存储器为32位时ARM代码比Thumb代码快约40 存储器为16位时Thumb比ARM代码快约4050 使用Thumb代码,存储器的功耗会降低约3078状态切换方法 q ARM指令集和Thumb指令集均有切换处理器状态的指令, 并可在两种工作状态之间切换,q 在开始执行代码时,处于ARM状态

5、。89进入Thumb状态q 当操作数寄存器的状态位(位0)为1时,可以采用执 行BX指令的方法,使微处理器从ARM状态切换到Thumb 状态。q 当处理器处于Thumb状态时发生异常(如IRQ、FIQ、 Undef、Abort、SWI等),则异常处理返回时,自动切 换到Thumb状态。910切换到ARM状态q 当操作数寄存器的状态位为0时,执行BX指令时可以使 微处理器从Thumb状态切换到ARM状态。q 在处理器进行异常处理时,把PC指针放入异常模式链 接寄存器中,并从异常向量地址开始执行程序,也可 以使处理器切换到ARM状态。1011处理器模式q usr:ARM处理器正常的程序执行状态q

6、fiq:用于高速数据传输或通道处理q irq:用于通用的中断处理q svc:操作系统使用的保护模式q abt:用于虚拟存储及存储保护q sys:运行具有特权的操作系统任务q und:当出现未定义指令终止时进入该模式1112用户模式和特权模式q 除了用户模式之外的其他6种处理器模式称为特权模式q 特权模式下,程序可以访问所有的系统资源,也可以 任意地进行处理器模式的切换。q 特权模式中,除系统模式外,其他5种模式又称为异常模式q 大多数的用户程序运行在用户模式下,此时,应用程 序不能够访问一些受操作系统保护的系统资源,应用 程序也不能直接进行处理器模式的切换。q 用户模式下,当需要进行处理器模式

7、切换时,应用程 序可以产生异常处理,在异常处理中进行处理器模式 的切换。1213模式切换q 处理器模式可以通过软件进行切换,也可以通过外部 中断或者异常处理过程进行切换。 q 当应用程序发生异常中断时,处理器进入相应的异常 模式。在每一种异常模式下都有一组寄存器,供相应 的异常处理程序使用,这样就可以保证在进入异常模 式时,用户模式下的寄存器不被破坏。 q 系统模式并不是通过异常进入的,它和用户模式具有 完全一样的寄存器。但是系统模式属于特权模式,可 以访问所有的系统资源,也可以直接进行处理器模式 切换。它主要供操作系统任务使用。通常操作系统的 任务需要访问所有的系统资源,同时该任务仍然使用

8、用户模式的寄存器组,而不是使用异常模式下相应的 寄存器组,这样可以保证当异常中断发生时任务状态 不被破坏。 1314ARM微处理器的存储器格式 q ARM体系结构所支持的最大寻址空间为4GB(232字节)q ARM体系结构将存储器看作是从零地址开始的字节的线 性组合。从零字节到三字节放置第一个存储的字数据, 从第四个字节到第七个字节放置第二个存储的字数据, 依次排列。q ARM体系结构可以用两种方法存储字数据,称之为大端 格式和小端格式 1415ARM体系结构的存储器格式大端格式 q 在这种格式中,字数据的高字节存储在低地址中,而字 数据的低字节则存放在高地址中1516ARM体系结构的存储器格

9、式小端格式 q 与大端存储格式相反,在小端存储格式中,低地址中存放 的是字数据的低字节,高地址存放的是字数据的高字节1617寄存器组织 nARM微处理器共有37个32位寄存器,其中31个为通 用寄存器,6个为状态寄存器。但是这些寄存器不 能被同时访问,具体哪些寄存器是可编程访问的, 取决微处理器的工作状态及具体的运行模式。但在 任何时候,通用寄存器R14R0、程序计数器PC、 一个或两个状态寄存器都是可访问的。 1718ARM状态下的寄存器组织 q 通用寄存器:通用寄存器包括R0R15,可以分为三类:未分组寄存器R0R7分组寄存器R8R14程序计数器PC(R15)1819ARM状态下的寄存器组

10、织1920未分组寄存器R0R7q 在所有的运行模式下,未分组寄存器都指向同一个物理寄 存器,他们未被系统用作特殊的用途,因此,在中断或异 常处理进行运行模式转换时,由于不同的处理器运行模式 均使用相同的物理寄存器,可能会造成寄存器中数据的破 坏,这一点在进行程序设计时应引起注意。2021分组寄存器R8R12q 每次所访问的物理寄存器与处理器当前的运行模式有关q R8R12:每个寄存器对应两个不同的物理寄存器 当使用fiq模式时,访问寄存器R8_fiqR12_fiq; 当使用除fiq模式以外的其他模式时,访问寄存器R8_usr R12_usr。2122分组寄存器R13R14q R13、R14:每

11、个寄存器对应6个不同的物理寄存器q 其中的一个是用户模式与系统模式共用,另外5个物理寄 存器对应于其他5种不同的运行模式q 采用以下的记号来区分不同的物理寄存器: R13_ R14_q mode为以下几种之一:usr、fiq、irq、svc、abt、und。2223堆栈指针R13q R13在ARM指令中常用作堆栈指针,但这只是一种习惯用 法,用户也可使用其他的寄存器作为堆栈指针。q 在Thumb指令集中,某些指令强制性的要求使用R13作为 堆栈指针。q 由于处理器的每种运行模式均有自己独立的物理寄存器 R13,在初始化部分,都要初始化每种模式下的R13,这 样,当程序的运行进入异常模式时,可以

12、将需要保护的寄 存器放入R13所指向的堆栈,而当程序从异常模式返回时 ,则从对应的堆栈中恢复。 2324子程序连接寄存器R14q R14也称作子程序连接寄存器或连接寄存器LR。当执行 BL子程序调用指令时,可以从R14中得到R15(程序计数 器PC)的备份。其他情况下,R14用作通用寄存器。q 在每一种运行模式下,都可用R14保存子程序的返回地址 ,当用BL或BLX指令调用子程序时,将下一条指令的地址 值拷贝给R14,执行完子程序后,又将R14的值拷贝回PC ,即可完成子程序的调用返回。BLSUB1 SUB1:STMFD SP!, , LR /*将R14存入堆栈*/ LDMFDSP!,PC/*

13、完成子程序返回 */ 2425程序计数器PC(R15)q ARM状态下,位1:0为0,位31:2用于保存PC;q Thumb状态下,位0为0,位31:1用于保存PC;q R15虽然也可用作通用寄存器,但一般不这么使用,因为 对R15的使用有一些特殊的限制,当违反了这些限制时, 程序的执行结果是未知的。q 由于ARM体系结构采用了多级流水线技术,对于ARM 指令集而言,PC总是指向当前指令的下两条指令的地址 ,即PC的值为当前指令的地址值加8个字节。2526程序状态寄存器(CPSR/SPSR)n CPSR(当前程序状态寄存器),CPSR可在任 何运行模式下被访问,它包括条件标志位 、中断禁止位、

14、当前处理器模式标志位, 以及其他一些相关的控制和状态位。q 每一种异常模式下又都有一个专用的物理状态寄存器,称 为SPSR(备份的程序状态寄存器),异常发生时,SPSR用 于保存CPSR的值,从异常退出时则可由SPSR来恢复CPSR。q 由于用户模式和系统模式不属于异常模式,他们没有SPSR ,当在这两种模式下访问SPSR,结果是未知的。2627Thumb状态下的寄存器组织 nThumb状态下的寄存器集是ARM状态下寄存器集的一 个子集q 程序可以直接访问8个通用寄存器(R7R0)、程序计数 器(PC)、堆栈指针(SP)、连接寄存器(LR)和CPSR。q 同样,每一种特权模式下都有一组SP、L

15、R和SPSR。 2728Thumb状态下的寄存器组织图2829Thumb状态下的寄存器与ARM状态下的寄 存器关系q Thumb状态下和ARM状态下的R0R7是相同的。q Thumb状态下和ARM状态下的CPSR和所有的SPSR是相同的。q Thumb状态下的SP对应于ARM状态下的R13。q Thumb状态下的LR对应于ARM状态下的R14。q Thumb状态下的程序计数器对应于ARM状态下R15。2930Thumb状态下的寄存器与ARM状态下的寄 存器关系图3031访问THUMB状态下的高位寄存器(Hi- registers) n在Thumb状态下,高位寄存器R8R15并不是标准寄 存器集

16、的一部分,但可使用汇编语言程序受限制的 访问这些寄存器,将其用作快速的暂存器。n使用带特殊变量的MOV指令,数据可以在低位寄存器和高 位寄存器之间进行传送;高位寄存器的值可以使用CMP和 ADD指令进行比较或加上低位寄存器中的值。 3132程序状态寄存器 q ARM体系结构包含一个当前程序状态寄存器(CPSR)和五 个备份的程序状态寄存器(SPSRs)。备份的程序状态寄 存器用来进行异常处理,其功能包括: 保存ALU中的当前操作信息 控制允许和禁止中断 设置处理器的运行模式3233程序状态寄存器的每一位的安排 3334程序状态寄存器的条件码标志 nN、Z、C、V均为条件码标志位。它们的内容 可被算术或逻辑运算的结果所改变,并且可 以决定某条指令是否被执行q 在ARM状态下,绝大多数的指令都是有条件执行的。q 在Thumb状态下,仅有分支指令是有条件执行的。 3435标志位的含义标志 位含 义N当用两个补码表示的带符号数进行运算

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 教学课件 > 初中课件

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