微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > ARM应用系统开发详解 第2章 ARM微处理器的编程模型

ARM应用系统开发详解 第2章 ARM微处理器的编程模型

时间:11-20 来源:互联网 点击:

RM状态下的寄存器组织的关系:

─ Thumb状态下和ARM状态下的R0~R7是相同的。

─ Thumb状态下和ARM状态下的CPSR和所有的SPSR是相同的。

─ Thumb状态下的SP对应于ARM状态下的R13。

─ Thumb状态下的LR对应于ARM状态下的R14。

─ Thumb状态下的程序计数器对应于ARM状态下R15

以上的对应关系如图2.5所示:

访问THUMB状态下的高位寄存器(Hi-registers):

在Thumb状态下,高位寄存器R8~R15并不是标准寄存器集的一部分,但可使用汇编语言程序受限制的访问这些寄存器,将其用作快速的暂存器。使用带特殊变量的MOV指令,数据可以在低位寄存器和高位寄存器之间进行传送;高位寄存器的值可以使用CMP和ADD指令进行比较或加上低位寄存器中的值。

2.5.3程序状态寄存器

ARM体系结构包含一个当前程序状态寄存器(CPSR)和五个备份的程序状态寄存器(SPSRs)。备份的程序状态寄存器用来进行异常处理,其功能包括:

─保存ALU中的当前操作信息

─控制允许和禁止中断

─设置处理器的运行模式

程序状态寄存器的每一位的安排如图2.6所示:

条件码标志(Condition Code Flags)

N、Z、C、V均为条件码标志位。它们的内容可被算术或逻辑运算的结果所改变,并且可以决定某条指令是否被执行。

在ARM状态下,绝大多数的指令都是有条件执行的。

在Thumb状态下,仅有分支指令是有条件执行的。

条件码标志各位的具体含义如表2-1所示:

表2-1条件码标志的具体含义

标志位

含义

N

当用两个补码表示的带符号数进行运算时,N=1表示运算的结果为负数;N=0表示运算的结果为正数或零;

Z

Z=1表示运算的结果为零;Z=0表示运算的结果为非零;

C

可以有4种方法设置C的值:

─ 加法运算(包括比较指令CMN):当运算结果产生了进位时(无符号数溢出),C=1,否则C=0。

─ 减法运算(包括比较指令CMP):当运算时产生了借位(无符号数溢出),C=0,否则C=1。

─ 对于包含移位操作的非加/减运算指令,C为移出值的最后一位。

─ 对于其他的非加/减运算指令,C的值通常不改变。

V

可以有2种方法设置V的值:

─ 对于加/减法运算指令,当操作数和运算结果为二进制的补码表示的带符号数时,V=1表示符号位溢出。

─ 对于其他的非加/减运算指令,V的值通常不改变。

Q

在ARM v5及以上版本的E系列处理器中,用Q标志位指示增强的DSP运算指令是否发生了溢出。在其他版本的处理器中,Q标志位无定义。

控制位

PSR的低8位(包括I、F、T和M[4:0])称为控制位,当发生异常时这些位可以被改变。如果处理器运行特权模式,这些位也可以由程序修改。

─中断禁止位I、F:

I=1禁止IRQ中断;

F=1禁止FIQ中断。

─ T标志位:该位反映处理器的运行状态。

对于ARM体系结构v5及以上的版本的T系列处理器,当该位为1时,程序运行于Thumb状态,否则运行于ARM状态。

对于ARM体系结构v5及以上的版本的非T系列处理器,当该位为1时,执行下一条指令以引起为定义的指令异常;当该位为0时,表示运行于ARM状态。

─运行模式位M[4:0]:M0、M1、M2、M3、M4是模式位。这些位决定了处理器的运行模式。具体含义如表2-2所示:

表2-2运行模式位M[4:0]的具体含义

M[4:0]

处理器模式

可访问的寄存器

0b10000

用户模式

PC,CPSR,R0-R14

0b10001

FIQ模式

PC,CPSR, SPSR_fiq,R14_fiq-R8_fiq, R7~R0

0b10010

IRQ模式

PC,CPSR, SPSR_irq,R14_irq,R13_irq,R12~R0

0b10011

管理模式

PC,CPSR, SPSR_svc,R14_svc,R13_svc,,R12~R0,

0b10111

中止模式

PC,CPSR, SPSR_abt,R14_abt,R13_abt, R12~R0,

0b11011

未定义模式

PC,CPSR, SPSR_und,R14_und,R13_und, R12~R0,

0b11111

系统模式

PC,CPSR(ARM v4及以上版本), R14~R0

由表2-2可知,并不是所有的运行模式位的组合都是有效地,其他的组合结果会导致处理器进入一个不可恢复的状态。

保留位

PSR中的其余位为保留位,当改变PSR中的条件码标志位或者控制位时,保留位不要被改变,在程序中也不要使用保留位来存储数据。保留位将用于ARM版本的扩展。

2.6 异常(Exceptions)

当正常的程序执行流程发生暂时的停止时,称之为异常,例如处理一个外部的中断请求。在处理异常之前,当前处理器的状态必须保留,这样当异常处理完成之后,当前程序可以继续执行。处理器允许多个异常同时发生,它们将会按固定的优先级进行处理。

ARM体系结构中的异常,与8位/16位体系结构的中断有很大的相似之处,但异常与中断的概念并不完全等同。

2.6.1 ARM体系结构所支持的异常类型

ARM体系结构所支持的异常及具体含义如表2-3所示。

表2-3 ARM体系结构所支持的异常

异常类型

具体含义

复位

当处理器的复位电平有效时,产生

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top