复习3

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

ARM状态的寄存器_ARM状态通用寄存器
不分组寄存器R0~R7 :
R0~R7是不分组寄存器。这意味着在所有 处理器模式下,它们每一个都访问的是同 一个物理寄存器。它们是真正并且在每种 状态下都统一的通用寄存器。 必须注意对同一寄存器在不同模式下使用 时的数据保护。

ARM状态的寄存器_ARM状态通用寄存器
ARM寄存器组成概述 ARM状态下的寄存器组织 Thumb状态下的寄存器组织
ARM寄存器组成概述
ARM处理器总共有37个寄存器,这37个寄存 器按它在用户编程中的功能划分,可以分为以 下两类寄存器
31个通用寄存器 在这31个通用寄存器中包括了程序计数器 (PC),这些寄存器都是32位的。 6个状态寄存器。
ARM状态的寄存器_ARM状态通用寄存器
通用寄存器(R0~R15)可分为3类:
不分组寄存器(The unbanked registers): R0~R7; 分组寄存器(The banked registers): R8~R14; 程序计数器:R15(PC)
程序计数器:R15(PC)

ARM状态下的寄存器组织
一.ARM状态的寄存器简介 二.ARM状态的通用寄存器 三.ARM程序状态寄存器
ARM程序状态寄存器
所有处理器模式下都可以访问当前的程 序状态寄存器CPSR。CPSR包含条件码 标志、中断禁止位、当前处理器模式以 及其它状态和控制信息。 在每种异常模式下都有一个对应的物理 寄存器——程序状态保存寄存器SPSR。 当异常出现时,SPSR用于保存CPSR的 状态,以便异常返回后恢复异常发生时 的工作状态。
中止 R0
未定义
普通中断
快速中断
R1
R2 R3 R4 R5 R6 R7
R13(SP)
R14(LR)
R13-svc
R14-svc
R13-abt
R13-und
R13-irq
R14-irq
R13-fiq
R14-fiq
R14-abt R14-und R15 (PC)
CPSR
无 SPSR-svc SPSR-abt SPSR-und SPSR-irq SPSR-fiq
ARM处理器工作状态
ARM处理器在两种工作状态之间切换方法为
进入Thumb状态:
当操作数寄存器Rm的状态位bit[0]为1时, 执行BX Rm指令进 入 Thumb状态 所有的异常都是在ARM状态下进行,如果处理 器在Thumb状态进入异常,则当异常处理(IRQ ,FIQ,Undef,Abort和SWI)返回时,自动切 换到Thumb状态。
嵌入式系统设计
陕科大:张开生 Tel:(029)86168628(B323) E_mail:qrsjsj@ QQ:80649433
嵌入式系统开发与应用
复习3 ARM体系结构
ARM技术基础
ARM处理器工作状态 ARM处理器工作模式 ARM寄存器组成 ARM的异常中断 ARM组织结构简介 ARM存储器接口及存储器层次 ARM协处理器 ARM片上总线AMBA 基于JTAG的ARM系统调试
ARM处理器工作状态
进入ARM状态:
当操作数寄存器Rm的状态位bit[0]为0 时,执行BX Rm指令进入ARM状态。 如果处理器进行异常处理(IRQ,FIQ, Undef,Abort和SWI),在此情况下,把 PC放入异常模式链接寄存器LR中,从异常 向量地址开始执行也可以进入ARM状态。
ARM处理器工作状态
自从ARM7TDMI核以后,体系结构中具有T变 种的ARM处理器核可以工作在以下两种状态:
ARM状态
32位,ARM状态下执行字对准的32位ARM指令;
Thumb状态
16位,Thumb状态下执行半字对准的16位Thumb指 令。在Thumb状态下,程序计数器PC使用位1选择另 一个半字。
11011
未定义
11111
系统
ARM处理器工作模式


除用户模式外的其他6种模式称为 特权模式。 特权操作模式主要处理异常和监控调 用(有时称为软件中断),它们可以 自由的访问系统资源和改变模式。 特权模式中除系统模式以外的5种模 式又称为异常模式, 特权模式由异常模式和系统模式组成
ARM寄存器组成
分组寄存器R8~R14
FIQ模式分组寄存器R8~R12
在FIQ模式下使用R8_fiq~R12_fiq,FIQ处理程 序可以不必 保存和恢复中断现场,从而使FIQ中断的处理过程更加迅速。
FIQ以外的分组寄存器R8~R12
在FIQ模式以外的其它4种异常模式下,可以访问 R8~R12 的寄存器和用户模式、系统模式下的R8-R12没有区别,是属 于同一物理寄存器,也没有任何指定的特殊用途
ARM处理器工作状态
在程序执行的过程中,处理器可以在 两种状态下切换。需要强调的是:
ARM和Thumb之间状态的切换不影响处理器 的模式或寄存器的内容。 ARM指令集和Thumb指令集都有相应的状态 切换命令。 ARM处理器在开始执行代码时,只能处于 ARM状态。
ARM处理器工作模式
通 用 寄 存 器 和 程 序 计 数 器 R13(SP) R14(LR) 状态寄存 器 R13-svc R14-svc
R13-irq R14-irq

SPSR-svc
SPSR-irq
SPSR-fiq
ARM状态的寄存器_ARM状态通用寄存器
通用寄存器(R0~R15)可分为3类:
不分组寄存器(The unbanked registers): R0~R7; 分组寄存器(The banked registers): R8~R14; 程序计数器:R15(PC)
ARM处理器共支持所列的7种处理器模式 见下表 表2-2中给出了CPSR[4:0]与七种工 作模式的关系以及各种模式的解释。
CPSR[4:0]
模式
用户
用途
正常用户模式, 程序正常执行模式
可访问的寄存器
PC,R14~R0,CPSR
10000
10001
10010 10011 10111
FIQ
IRQ SVC 中止
Thumb状态下的寄存器集是ARM状态下寄存 器集的子集。 程序员可以直接访问8个通用的寄存器 (R0~R7),程序计数器PC、堆栈指针SP、 连接寄存器LR和当前状态寄存器CPSP。 每一种特权模式都各有一组SP,LR和SPSR。 图2-6为Thumb状态下寄存器组织图。
用户
系统
管理
ARM状态下的寄存器组织
一.ARM状态的寄存器简介 二.ARM状态的通用寄存器 三.ARM程序状态寄存器
模式 特权模式
用户 系统 管理 中止 R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13-abt R13-und R14-abt R14-und R15(PC) CPSR SPSR-abt SPSR-und R8-fiq R9-fiq R10-fiq R11-fiq R12-fiq R13-fiq R14-fiq 异常模式 未定义 普通中断 快速中断
ARM的异常中断


异常 : ARM的异常中断:
在正常的程序执行过程中,每执行一条ARM指令,程序计 数器 (PC)的值加4;每执行一条Thumb指令,程序计数 器寄存器(PC)的值加2,整个过程是按顺序执行。 在程序执行过程中通过控制跳转类指令,程序可以跳转到 特定的地址标号处执行,或者跳转到特定的子程序处执行。 而当异常中断发生时,系统执行完当前指令后,将跳转到 相应的异常中断处理程序处执行异常处理,异常中断处理 完成后,程序返回。
31个通用寄存器
R0~R15; R13_svc、R14_svc; R13_abt、R14_abt; R13_und、R14_und; R13_irq、R14_irq; R8_frq-R14_frq。
6个状态寄存器


CPSR;SPSR_svc、SPSR_abt、 SPSR_und、SPSR_irq和SPSR_fiq。 6个状态寄存器也是32位的,但目前只使 用了其中的12位


其中<mode>可以从svc、abt、und、irq和fiq5种 模式中选取一个。
两种方式可实现子程序的返回
执行下面任何一条指令都可以实现子程序的返回: MOV PC,LR BX LR 在子程序入口使用下面的指令将PC保存到栈中: STMFD SP!,{<registers>,LR} 相应地,下面的指令可以实现子程序返回: LDMFD SP!,{<registers>,PC}
ARM程序状态寄存器
条件码标志 控制位
最低8位I,F,T和M[4:0]位用做控制位。当异常出现时改变控制位。当处理器 在特权模式下时也可以由软件改变。
– 中断禁止位
I =1则禁止IRQ中断;F=1则禁止FIQ中断。
– T位
T=0指示ARM执行;T=1指示Thumb执行。
– M模式位
M0,M1,M2,M3和M4 (M[4:0])是模式位,这些位决定 处理器的工作模式,如图2-4所示。注意,M[4:0]其他组合 的结果是不可预知的。
1: Thumb
0:ARM 1:禁止 FIQ 中 断 禁 止 0:允许 位 1:禁止 IRQ 中 断 禁 止 0:允许 位 图2-5 程序状态寄存器
工作状态位
Thumb状态下的寄存器组织
Thumb状态下的寄存器组织概述 Thumb状态和ARM状态下的寄存器关系
Thumb状态下的寄存器组织概述
图2-6 Thumb状态下的寄存器组织
Thumb状态和ARM状态下的寄存器关系


Thumb状态的R0~R7与ARM状态的R0~R7是一致 的。 Thumb状态的CPSR和SPSR与ARM状态的CPSR 和SPSR是一致的。 Thumb状态的SP映射到ARM状态的R13。 Thumb状态的LR映射到ARM状态的R14。 Thumb状态的PC映射到ARM状态的PC(R15)。 高寄存器R8~R15并不是标准寄存器集的一部分, 在使用它们时有一定的限制,具体用法见第4章 Thumb指令介绍。
ARM状态的寄存器_ARM状态通用寄存器
分组寄存器R13、R14
寄存器R13、R14各有6个分组的物理寄存器。1 个用于用户模式和系统模式,而其他5个分别用 于5种异常模式。 异常模式下R13、R14的访问时特别需要明确指 定 它们的工作模式。寄存器名字构成规则如下:
R13_<mode> R14_<mode>
ARM寄存器组成概述
这些寄存器并不是在同一时间全都可以被 编程者看到或访问的。 处理器工作状态和工作模式共同决定了程 序员可以访问的寄存器。 如作状态,也就是说ARM处 理器在每个时刻只能工作在七种模式中的 任何一种和ARM、Thumb状态中一种 因此程序员可以操作的寄存器因工作状态 和工作模式不同而不同。
其他位
条件码标志位
保留位
控制位
N Z C V .. … ….
I F T M M M M M 4 3 2 1 0
Overflow
Carry Zero Negative
模式位
M[4:0] 模式 0b10000 用户 0b10001 FIQ 0b10010 IRQ 0b10011 管理 0b10111 中止 0b11011 未定义 0b11111 系统
寄存器R15被用作程序计数器,也称为PC。它虽 然可以作为一般的通用寄存器使用,但是由于 R15的特殊性,即R15值的改变将引起程序执行 顺序的变化,这有可能引起程序执行中出现一些 不可预料的结果, 对于R15的使用一定要慎重。当向R15中写入一 个地址值时,程序将跳转到该地址执行。由于在 ARM状态下指令总是是字对齐的,所以R15值的 第0位和第1位总为0,PC[31:2]用于保存地 址。
处理快速中断,支持高速数 PC,R14_fiq~R8_fiq, R7~R0,CPSR,SPSR_fiq 据传送或通道处理
处理普通中断 操作系统保护模式 处理软件中断(SWI) 处理存储器故障、实现虚 拟存储器和存储器保护 处理未定义的指令陷阱, 支持硬件协处理器的软件 仿真 运行特权操作系统任务 PC,R14_irq~R13_fiq, R12~R0,CPSR,SPSR_irq PC,R14_svc~R13_svc, R12~R0,CPSR,SPSR_svc PC,R14_abt~R13_abt, R12~R0,CPSR,SPSR_abt PC,R14_und~R13_und, R12~R0,CPSR, SPSR_und PC,R14~R0,CPSR
相关文档
最新文档