首页 > 编程知识 正文

arm原理及应用(arm处理器有几个寄存器)

时间:2023-05-06 10:37:09 阅读:74679 作者:4271

注:本人是初学者,如有错误请指正。

1.ARM指令有37个寄存器,31个通用寄存器和6个状态寄存器。

----- -酷睿tex-a是三个寄存器,monitor模式r13_mon、r14_mon、spsr_mon;

原因:系统模式和用户模式共享同一寄存器。 用户,系统模式没有“保存的程序状态寄存器(SPSR )”,但其他五种模式分别有相应的“保存的状态寄存器(SPSR )”。 共计5个SPSR,7个模式共享“当时的程序状态寄存器) (CPSR )”,共有6个状态寄存器和31个通用寄存器。 注意:您可以在任何模式下访问。

r0--r12、r13 (堆栈指针寄存器sp )、r14 (链接寄存器lr )、r15 (程序计数器pc )、CPSR

2.CPSR程序状态寄存器分析:

该寄存器的作用主要是记录前一条指令执行的状态,并根据结果执行后一条;

1 .高4位: NZCV

n1 )结果为负数;

z集1 :结果为0;

C集1 :结果完成或借用

v1 )结果溢出

2.27位--Q位:仅支持ARM v5TE-J,表示饱和状态

3.25-26位:空

4.24位-J位:仅支持ARM v5TE-J,

T=0; 如果J=1,则处理器处于Jazelle状态;

5.20-23位: DNM位,do not modify,不能动就对了;

6.16-19位: GE【3:0】位,以上(执行SIMD指令时有效);

7.10-15位: IT【7:2】、if . then .命令执行状态位;

8.9位-E位,大小侧控制位;

9.8位-A位,A=1:禁止不正确的数据异常;

10.6-7位,I=1:禁止IRQ; f=1:禁止智商;

11.5位-T位: T=0,J=0:处理器处于ARM状态;

T=1,J=0:处理器处于ARM状态;

T=1,J=1:处理器处于ARM状态;

12 .最后五位-模式位:表示8种不同的模式,例如10000 - USER模式;

3.SPSR保存的状态寄存器详细信息:

角色:如果出现异常,内核将执行的第一步:

将CPSR转换为SPSR_;

---为了保存异常以前的状态,异常结束时,回到这里; 处理器在应对不同异常时使用不同的工作模式,每个异常模式都有对应的SPSR寄存器;

--- () )所以SPSR寄存器用于此);

4.lr链接寄存器详情:

角色:如果出现异常,内核将执行步骤3 :

返回地址为LR_;

---PC是将PC指针(指向预取命令的指针)保存到lr () ),因此链接寄存器就是此用途)。

5.sp堆栈指针寄存器

作用:存储pc的值,一般在中断前堆栈保护pc指针,即所谓的堆栈保护

6.r15----PC--程序计数寄存器

1 .对于arm状态,最后两位未定义(0),因为命令以字节32位对齐;

4的二进制值为0100,因此如果指令的最后两位数为0,则此指令必须是4的倍数

2 .对于2.Thumb状态,未定义末尾比特(0),因为命令以半字节16bits对齐;

3.Jazelle状态时,命令以8bits对齐,运行1字节需要4个命令;

7 .说明:1)、用户模式以外的6种模式称为特权模式。 特权模式是指a.MRS (将状态寄存器的内容放入通用寄存器); b.MSR (将通用寄存器的内容放入状态寄存器)。 由于无法变更状态寄存器的内容,因此将内容复制到通用寄存器后,修改通用寄存器的内容,将通用寄存器的内容复制到状态寄存器中,即可完成“状态寄存器的修改”。

2 )剩下的6种模式中,除系统模式外,统称为异常模式。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。