您的位置 首页 培训

ARM处理器形式及寄存器

一、ARM处理器模式:ARM微处理器支持7种运行模式,分别为:用户模式(usr):ARM处理器正常的程序执行状态。快速中断模式(fiq):用于

一、ARM处理器形式

  • ARM微处理器支撑7种运转形式,别离为:
用户形式(usr): ARM处理器正常的程序履行状况。
快速间断形式(fiq):用于高速数据传输或通道处理。
外部间断形式(irq):用于通用的间断处理。
管理形式(svc): 操作体系运用的保护形式。软间断和复位
数据拜访间断形式(abt): 当数据或指令预取停止时进入该形式,可用于虚拟存储及存储保护。
体系形式(sys): 运转具有特权的操作体系使命。
未界说指令间断形式(und):当未界说的指令履行时进入该形式,可用于支撑硬件协处理器的软件仿真
  • 除用户形式外的其他6种形式都称为特权形式,这些形式下,程序能够拜访一切的体系资源,也能够任一进行处理器形式切换。其间,除体系形式外,其他5种形式又称为反常形式

二、ARM寄存器

(一)ARM作业状况下的寄存器安排
ARM处理器共有37个寄存器。其间包括:
  • 31个通用寄存器,包括程序计数器(PC)在内。这些寄存器都是32位寄存器
  • 6个32位状况寄存器。
表1各种处理器形式下的寄存器
用户形式
体系形式
特权形式
间断形式
未界说指令形式
外部间断形式
快速间断形式
R0
R0
R0
R0
R0
R0
R0
R1
R1
R1
R1
R1
R1
R1
R2
R2
R2
R2
R2
R2
R2
R3
R3
R3
R3
R3
R3
R3
R4
R4
R4
R4
R4
R4
R4
R5
R5
R5
R5
R5
R5
R5
R6
R6
R6
R6
R6
R6
R6
R8
R8
R8
R8
R8
R8
R8_fiq
R9
R9
R9
R9
R9
R9
R9_fiq
R10
R10
R10
R10
R10
R10
R10_fiq
R11
R11
R11
R11
R11
R11
R11_fiq
R12
R12
R12
R12
R12
R12
R12_fiq
R13
R13
R13_svc
R13_abt
R13_und
R13_inq
R13_fiq
R14
R14
R14_svc
R14_abt
R14_und
R14_inq
R14_fiq
PC
PC
PC
PC
PC
PC
PC
CPSR
CPSR
CPSR
SPSR_svc
CPSR
SPSR_abt
CPSR
SPSR_und
CPSR
SPSR_inq
CPSR
SPSR_fiq
  • 当发生反常间断时,处理器进入相应的反常形式。在每一种反常形式下都有相应的一组寄存器,供相应的反常处理程序运用,这样就能够确保在进入反常形式时,用户形式下的寄存器(保存了程序运转状况)不被损坏。
  • 体系形式不是经过反常进入的,他和用户形式具有彻底相同的寄存器

1、通用寄存器

通用寄存器一般分为以下三类:
未备份寄存器:R0——R7
备份寄存器:R8——R14
程序计数器PC,即R15
未备份寄存器R0——R7:
R0~R7。在一切的处理器形式下指的都是同一个物理寄存器。在反常间断形成处理器形式切换时,因为不同的处理器形式运用相同的物理寄存器,或许形成寄存器中数据被损坏。
备份寄存器R8~R14:
(1)寄存器R8~R12
每个寄存器对应两个不同的物理寄存器。例如,当运用快速间断形式下的寄存器时,寄存器R8和寄存器R9别离记作R8_fiq、R9_fiq;当运用用户形式下的寄存器时,寄存器R8和寄存器R9别离记作R8_usr、R9_usr等。在这两种状况下运用的是不同的物理寄存器。体系没有将这几个寄存器用于任何的特别用处,可是当间断处理十分简略,仅仅运用R8~R14寄存器时,FIQ处理程序能够不用履行保存和康复间断现场的指令,然后能够使间断处理进程十分敏捷。关于备份寄存器R13和R14来说,每个寄存器对应6个不同的物理寄存器,其间的一个是用户形式和体系形式共用的;别的的5个对应于其他5种处理器形式。
(2)寄存器R13在ARM中常用作栈指针(Stack Point,SP)
  • 在ARM指令会集,这仅仅一种习气的用法,并没有任何指令强制性的运用R13作为栈指针,用户也能够运用其他的寄存器作为栈指针;而在Thumb指令会集,有一些指令强制性地运用R13作为栈指针。
  • 每一种反常形式具有自己的物理的R13。应用程序初始化该R13,使其指向该反常形式专用的栈地址。当进入反常形式时,能够将需求运用的寄存器保存在R13所指的栈中;当退出反常处理程序时,将保存在R13所指的栈中的寄存器值弹出。这样就使反常处理程序不会损坏被其间断程序的运转现场。
(3)寄存器R14又被称为衔接寄存器(Link Register,LR)
  • 在ARM体系中具有下面两种特别的效果:每一种处理器形式自己的物理R14中寄存在当时子程序的回来地址。当经过BL或BLX指令调用子程序时,R14被设置成该子程序的回来地址。在子程序中,当把R14的值到程序计数器PC中时,子程序即回来。
  • 当反常间断发生时,该反常形式特定的物理R14被设置成该反常形式即将回来的地址,关于有些反常形式,R14的值或许与将回来的地址有一个常数的偏移量。详细的回来办法与上面的子程序回来办法根本相同。
  • R14寄存器也能够作为通用寄存器运用。

程序计数器R15(PC)

  • 程序计数器R15又被记作PC。它尽管能够作为一般的通用寄存器运用,可是有一些指令在运用R15时有一些特别约束。当违反了这些约束时,该指令履行的成果将是不行意料的。
  • 因为ARM选用了流水线机制,当正确读取了PC的值时,该值为当时指令地址值加8个字节。也就是说,关于ARM指令集来说,PC指向当时指令的下两条指令的地址。(因为ARM运用RISC精简指令集,ARM的一条指令所占内存为32位,4个字节。所以当一条指令正确读取时,该寄存器指向当时指令地址加8,即指向下两条指令的地址)
  • 当成功地向R15中写入一个地址数值时,程序将跳到该地址履行。因为ARM指令是字对齐的,所以PC值的第0位和第1位总为0。需求留意的是,当运用指令STR/STM保存R15时,保存的或许是当时指令地址值加8字节,也或许保存的是当时指令地址加12字节。到底是哪种办法,取决于芯片详细规划办法。无论如何,在同一芯片中,要么选用当时指令地址加8,要么选用当时指令地址加12,不能有些指令选用当时指令地址加8,另一些指令选用当时指令地址加12。因而关于用户来说,尽量防止运用STR/STM指令来保存R15的值。当不行防止这种运用办法时,能够先经过一些代码来确认所用的芯片运用的是哪种完成办法。
  • 关于ARM版别4以及更高的版别,程序有必要确保写入R15寄存器的地址值的bits[1:0]为0b00;不然将会发生不行预知的成果。
  • 关于Thumb指令集来说,指令是半字对齐的。处理器将疏忽bit[0],即写入R15的地址值首要与0XFFFFFFFE做与操作,再写入R15中。
  • 还有—些指令关于R15的用法有一些特别的要求。比方,指令BX运用bit[0]来确认是ARM指令,仍是Thumb指令。这种读取PC值和写入PC值的不对称的操作需求特别留意。
注:PC指向的地址是取指单元要取指令的地址,而不是当时履行的指令。
2、程序状况寄存器
CPSR(当时程序状况寄存器)能够在任何处理器形式下被拜访。它包括了条件标志位、间断制止位、当时处理器形式标志以及其他的一些操控和状况位。每一种处理器形式下都有一个专用的物理状况寄存器,称为SPSR(备份程序状况寄存器)。当特定的反常间断发生时,这个寄存器用于寄存当时程序状况寄存器(CPSR)的内容。在反常间断程序退出时,能够用SPSR中保存的值来康复CPSR。
因为用户形式和体系形式不是反常间断形式,所以它们没有SPSR。当在用户形式或体系形式中拜访SPSR,将会发生不行预知的成果。
CPSR的格局如下所示。SPSR格局与CPSR格局相同。
31
30
29
28
27
26
7
6
5
4
3
2
1
0
N
Z
C
V
Q
DNM(RAZ)
I
F
T
M4
M3
M2
M1
M0

1.条件标志位

N(Negative)、Z(Zero)、C(Carry)及V(oVerflow)统称为条件标志位。大部分的ARM指令能够依据CPSR中的这些条件标志位来挑选性地履行。

在ARM状况下,绝大多数的指令都是有条件履行的。
在Thumb状况下,仅有分支指令是有条件履行的。

N  Negative        关于有符号运算,假如成果是负数则置位Z  Zero            假如成果是零则置位C  Carry           关于无符号运算,假如发生进位则置位V  Overflow        关于有符号运算,假如发生溢出则置位I  IRQ             间断禁用F  FIQ             快速间断禁用
标志位
意义
N
本位设置成当时指令运算成果的bit[31]的值
当两个补码标明的有符号整数运算时,N=1标明运算的成果为负数;N=0标明成果为正数或零
Z
Z=1标明运算的成果为零;Z=0标明运算的成果不为零。
关于CMP指令,Z=1标明进行比较的两个数巨细持平。
C

下面分4种状况评论C的设置办法:
在加法指令中(包括比较指令CMN),当成果发生了进位,则C=1,标明无符号数运算发生上溢出;其他状况下C=0。
在减法指令中(包括比较指令CMP),当运算中发生借位则C=0标明无符号数运算发生下溢出;其他状况下C=1。
关于包括移位操作的非加/减法运算指令,C中包括最终一次溢出的位数数值。
关于其他非加/减法运算指令,C位的值一般不受影响。
V
关于加/减法运算指令,当操作数和运算成果为二进制的补码标明的带符号数时V=1标明符号位溢出。
一般其他的指令不影响V位,详细可参阅各指令的阐明。

2.Q标志位

在ARMv5的E系列处理器中,CPSR的bit[27]称为Q标志位,首要用于指示增强的DSP指令是否发生了溢出。相同的SPSR中的bit[27]也称为Q标志位,用于在反常间断发生时保存和康复CPSR中的Q标志位。
在ARM v5曾经的版别及ARM v5的非E系列的处理器中,Q标志位没有被界说。CPSR的bit[27]归于DNM(RAZ)。

3.CPSR中的操控位

CPSR的低8位I、F、T及M[4:0]统称为操控位。当反常间断发生时这些位发生变化。在特权级的处理器形式下,软件能够修正这些操控位。
1)间断制止位
  • 当I=1时制止IRQ间断。
  • 当F=1时制止FIQ间断。
2)T操控位
T操控位用于操控指令履行的状况,即阐明本指令是ARM指令,仍是Thumb指令。对与不同版别的ARM处理器,T操控位的意义不同。
关于ARMv4以及更高版别的T系列的ARM处理器,
  • T=0标明履行ARM指令。
  • T=1标明履行Thumb指令。
关于ARMv5以及更高的版别的非T系列的ARM处理器,T操控位意义如下:
  • T=0标明履行ARM指令。
  • T=1标明强制下一条履行的指令发生未界说指令间断。
3)M操控位
操控位M[4:0]操控处理器形式,详细意义如表3所示。
表3操控位M[4:0]的意义
M[4:0]
处理器形式
可拜访的寄存器
0b10000
User
PC,R14一R0,CPSR
0b10001
FIQ
PC,R14_fiq-R8_flq,R7~R0,CPSR,SPSR_nq
0b10010
1RQ
PC,R14 _irq-R13 _irq,R12一R0,CPSR,SPSR_ irq
0b10011
Supervisor
PC,R14_ svc-R13 _svc,R12~R0,CPSR,SPSR_svc
0b10111
Abort
PC,R14_abt-R13_abt,R12~R0,CPSR,SPSR_abt
0b11011
Undefined
PC,R14_und-R13_und,R12~R0,CPSR,SPSR_ und

4.CPSR中的其他位

CPSR中的其他位用于将来ARM版别的扩展。应用软件不要操作这些位,以免与ARM将来版别的扩展抵触。
(二)Thumb作业状况下的寄存器安排

Thumb状况下的寄存器集是ARM状况下寄存器集的一个子集,程序能够直接拜访8个通用寄存器(R7~R0)、程序计数器(PC)、仓库指针(SP)、 衔接寄存器(LR)和CPSR。一起,在每一种特权形式下都有一组SP、LR和SPSR。图2.4标明Thumb状况下的寄存器安排。

Thumb状况下的寄存器安排与ARM状况下的寄存器安排的联系:
─ 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指令进行比较或加上低位寄存器中的值。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/changshang/peixun/276814.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部