您好,  [请登录] [QQ登录]  [支付宝登录[免费注册]

商品分类

分享到: 百度搜藏 搜狐微博 新浪微博 腾讯微博 QQ收藏 人人网 Facebook Twitter

ARM底子知识教程二

发布日期:2011-04-19

  ARM处理惩罚器的寄存器

   ARM处理惩罚器共有37个寄存器。此中包括:

  **31个通用寄存器,包括步伐计数器(PC)在内。这些寄存器都是32位寄存器。

  **6个状态寄存器。这些寄存器都是32位寄存器。

ARM处理惩罚器共有7种差别的处理惩罚器模式,每一种模式中都有一组相应的寄存器组。在任意时候,可见的寄存器包括15个通用寄存器(R0-R14),一个或两个状态寄存器及步伐计数器(PC)。在全部的寄存器中,有些是各模式公用一个物理寄存器,有一些寄存器各模式拥有本身独立的物理寄存器。

****************************************************

通用寄存器

***************************************************8

通用寄存器分为以下三类:备份寄存器、未备份寄存器、步伐计数器PC

未备份寄存器

未备份寄存器包括R0-R7。对付每一个未备份寄存器来说,全部处理惩罚器模式下都是利用同一个物理寄存器。未备份寄存器没有被体系用于分外的用途,任意可采取通用寄存器的场合都可以利用未备份寄存器。

备份寄存器

对付R8-R12备份寄存器来说,每个寄存器映射两个差别的物理寄存器。体系为将备份寄存器用于任意的特别用途,但是当停止处理惩罚非常大略,仅仅利用R8-R14寄存器时,FIQ处理惩罚步伐可以不必实行生存和规复停止现场的指令,从而可以使停止处理惩罚非常敏捷。

对付R13,R14备份寄存器来说,每个寄存器映射六个差别的物理寄存器,此中的一个是体系模式和用户模式共用的;别的的五个映射于其他的五种处理惩罚器模式。采取下面的暗号来区分各个物理寄存器:

R13_<MODE>

此中MODE可以是下面几种模式之一:usr,svc,abt,und,irq,fiq

步伐计数器PC

可以作为一样平常的通用寄存器利用,但有一些指令在利用R15时有一些限定。由于ARM采取了流水线处理惩罚器机制,当精确读取了PC的值时,该值为当前指令地点值加上8个字节。也便是说,对付ARM指令集来说,PC指向当前指令的下两条指令的地点。由于ARM指令是字对齐的,PC值的第0位和第一位总为0。

必要细致的是,当利用str/stm生存R15时,生存的大概是当前指令地点值加8个字节,也大概生存的是当前指令地点值加12个字节。到底哪种方法取决于芯片的详细计划。对付用户来说,只管即便克制利用STR/STM指令来生存R15的值。
当告成的向R15写入一个数值时,步伐将跳转到该地点实行。由于ARM指令是字对齐的,写入R15的值应餍足bits[1:0]为0b00,详细请求arm个版本有所差别:
**对付arm3以及更低的版本,写入R15的地点值bits[1:0]被马虎,即写入r15的地点值将与0xFFFF FFFC做与操纵。
**对付ARM4以及更高的版本,步伐必须包管写入R15的地点值bits[1:0]为0b00,不然将孕育产生不可预知的结果。
对付Thumb指令集来说,指令是班子对齐的,处理惩罚器将马虎bit[0]。

步伐状态寄存器


CPSR(当前步伐状态寄存器)在任那边理惩罚器模式下被访问。它包括了条件标记位、停止克制位、当前处理惩罚器模式标记以及其他的一些控制和状态位。每一种处理惩罚器

模式下都有一个专用的物理状态寄存器,称为SPSR(备份步伐状态寄存器)
。当特定的非常停止产生时,这个寄存器用于存放当前步伐状态寄存器的内容。在非常停止退出时,可以用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


***条件标记位***
N——本位设置成当前指令运算结果的bit[31]的值。当两个别现的有标记整数运算时,n=1表现运算结果为负数,n=0表现结果为正书或零。

z——z=1表现运算的结果为零;z=0表现运算的结果不为零。对付CMP指令,Z=1表现举行比较的两个数大小相称。

C——下面分四种环境讨论C的设置要领:
在加法指令中(包括比较指令CMP),当结果孕育产生了进制,则C=1,表现无标记运算产生上溢出;其他环境C=0。
在减法指令中(包括减法指令CMP),当运算中产生错位,则C=0,表现无标记运算数产生下溢出;其他环境下C=1。
对付包括移位操纵的非加碱运算指令,C中包括末了一次溢出的的位的数值
对付其他非加减运算指令,C位的值通常不受影响
V——对付加减运算指令,当操纵数和运算结果为二进制的补码表现的带标记数时,V=1表现标记为溢出;通常其他指令不影响V位。

***Q标识位***
ARM V5的E系列处理惩罚器中,CPSR的bit[27]称为q标识位,重要用于指示加强的dsp指令是否产生了溢出。同样的spsr的bit[27]位也称为q标识位,用于在非常中

断产生时生存和规复CPSR中的Q标识位。
ARM V5过去的版本及ARM V5的非E系列的处理惩罚器中,Q标识位没有被定义。


***CPSR中的控制位***

CPSR的低八位I、F、T、M[4:0]统称为控制位。当非常停止产生时这些位产生变革。在特权级的处理惩罚器模式下,软件可以修改这些控制位。

**停止克制位:当I=1时克制IRQ停止,当F=1时克制FIQ停止

**T控制位:T控制位用于控制指令实行的状态,即阐明本指令是ARM指令还是Thumb指令。对付ARM V4以更高版本的T系列ARM处理惩罚器,T控制位含义如下:
T=0表现实行ARM指令
T=1表现实行Thumb指令
对付ARM V5以及更高版本的非T系列处理惩罚器,T控制位的含义如下
T=0表现实行ARM指令
T=1表现逼迫下一条实行的指令孕育产生未定指令停止

***M控制位***
M控制位控制处理惩罚器模式,详细含义如下:

M[4:0] 处理惩罚器模式 可访问的寄存器
ob10000 user pc,r14~r0,CPSR
0b10001 FIQ PC,R14_FIQ-R8_FIQ,R7~R0,CPSR,SPSR_FIQ
0b10010 IRQ 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 UNDEFINEED PC,R14_UND-R8_UND,R12~R0,CPSR,SPSR_UND
0b11111 SYSTEM PC,R14-R0,CPSR(ARM V4以及更高版本)

***CPSR中的其他位***

这些位用于将来扩展。应用软件不要操纵这些位。

ARM体系中通常有以下3种方法控制步伐的实行流程:

**在正常实行进程中,每实行一条ARM指令,步伐计数器(PC)的值加4个字节;每实行一条Thumb指令,步伐计数器寄存器(PC)加2个字节。整个进程是按次序实行。

**跳转指令,步伐可以跳转到特定的地点标号处实行,大概跳转到特定的子步伐处实行。此中,B指令用于实行跳转操纵;BL指令在实行跳转操纵同时,生存子程

序的返回地点;BX指令在实行跳转操纵同时,根据目标地点为可以将步伐切换到Thumb状态;BLX指令实行3个操纵,跳转到目标地点处实行,生存子步伐的返回

地点,根据目标地点为可以将步伐切换到Thumb状态。

**当非常停止产生时,体系实行完当前指令后,将跳转到相应的非常停止处理惩罚步伐处实行。当非常停止处理惩罚步伐实行完成后,步伐返回到产生停止指令的下条指

令处实行。在进入非常停止处理惩罚步伐时,要生存被停止步伐的实行现场,从非常停止处理惩罚步伐退出时,要规复被停止步伐的实行现场。