ARM7TDMI寄存器组织

来源:互联网 发布:linux查看挂载硬盘命令 编辑:程序博客网 时间:2024/05/01 05:42

共有37个寄存器,其中31个通用寄存器,6个状态寄存器,它们全部是32bit宽。任何时候,通用寄存器R0~R14PC(R15)和一个或两个状态寄存器(CPSR)都是可以访问的。

1.不分组寄存器R0~R7

R0R7是不分组寄存器。所有处理器模式下,都存取一样的32位元寄存器。它们是真正的通用寄存器,没有架构所隐含的特殊用途。

2.分组寄存器R8~R14

R8~R14是分组寄存器。它们每一个存取的实体寄存器取决于当前处理器模式。若要存取特定的实体寄存器而不依赖当前的处理器模式,则要使用规定的名字。寄存器R8~R12各有两组实体寄存器:一组为FIQ模式,另一组为除FIQ以外的所有模式。只是使用R8~R14来简单地处理中断。寄存器R13R14各有6各分组的实体寄存器。1个用于使用者模式和系统模式,即System(sys,执行特权作业系统工作)User(usr,正常程序执行模式)。其它5个用于5种例外模式,即FIQ(fiq,支援高速资料般移或通道处理)IRQ(irq,用于通用中断处理)Supervisor(svc,作业系统保护模式)Abort mode(abt,实现虚拟记忆体或记忆体保护)Undefined(und,支援硬体辅助运算器的软体仿真)

寄存器R13通常用作堆栈指针,称为SP(Stack Pointer),每种例外模式都有自己的R13。寄存器R14用作连接寄存器LR。当执行BL子程序调用指令时,可从R14得到R15(程序计数器的备份),其它情况,R14用作通用寄存器,每一种运行模式,都可用R14保存子程序的返回地址,又将R14的值拷贝回PC,完成子程序的调用返回。

R15即程序计数器PC

3.程序状态寄存器

有一个CPSR(Current Program Status Register),在所有处理器模式下都可以存取当前的程序状态寄存器CPSRCPSR包含条件码标志,中断禁止位元,当前处理器模式以及其它状态和控制资讯。有5SPSR(Saved Program Status Register),每种例外模式都有一个程序状态保存寄存器SPSRSPSR用于保留CPSR的状态。

 

 

 

 

 

 

 

 

 


32-bits的程序状态寄存器可以分为4个域,bit[31:24]为条件符号位域,用f表示;bit[23:16]为状态位域,用s表示;bit[15:8]为扩充位域,用x表示;bit[7:0]为控制域,用c表示。

 
原创粉丝点击