ARM通用寄存器
发布时间:2008/12/22 0:00:00 访问次数:2399
通用寄存器包括r0~r15,可以分为三类:
(1)未分组寄存器r0~r7;
(2)分组寄存器r8~r14;
(3)程序计数器pc(r15)。
1.未分组寄存器r0~r7
在所有的运行模式下,未分组寄存器都指向同一个物理寄存器,它们未被系统用作特中数据的破坏。
2.分组寄存器r8~r14
对于分组寄存器,它们每一次所访问的物理寄存器与处理器当前的运行模式有关。对于r8~r12来说,每个寄存器对应2个不同的物理寄存器,当使用fiq模式时,访问寄存器rs__fiq~r12_fiq;当使用除πq模式以外的其他模式时,访问寄存器rs_usr~r12_usr。
对于r13、r14来说,每个寄存器对应6个不同的物理寄存器,其中的一个是用户模式与系统模式共用的,另外5个物理寄存器对应于其他5种不同的运行模式。采用以下的记号来区分不同的物理寄存器。
r13_<ode>
r14_<mode>
其中,mode为以下几种模式之一:usr、fiq、trq、svc、abt、und。
寄存器r13在arm指令中常用作堆栈指针,用户也可使用其他寄存器作为堆栈指针。而在thumb指令集中,某些指令强制性地要求使用r13作为堆栈指针。
由于处理器的每种运行模式均有自己独立的物理寄存器r13,所以在用户应用程序的初始化部分,一般都要初始化每种模式下的r13,使其指向该运行模式的栈空间。这样,当程序的运行进入异常模式时,可以将需要保护的寄存器放入r13所指向的堆栈,而当程序从异常模式返回时,则从对应的堆栈中恢复,采用这种方式可以保证异常发生后程序的正常执行。
r14也称作子程序链接寄存器(subroutine link register)或链接寄存器lr(linkregister)。当执行子程序调用指令(bl指令)时,r14中得到r15(程序计数器pc)的备份。其他情况下,r14用作通用寄存器。与之类似,当发生中断或异常时,对应的分组寄存器r14_svc、r14 lrq、r14_fiq、r14_abt和r14_und用来保存r15的返回值。
寄存器r14常用在如下的情况:在每一种运行模式下,都可用r14保存子程序的返回地址,当用bi.或blx指令调用子程序时,将pc的当前值拷贝给r14,执行完子程序后,又将r14的值拷贝回pc,即可完成子程序的调用返回ρ以上的描述可用指令完成。
首先执行以下任意一条指令:
欢迎转载,信息来源维库电子市场网(www.dzsc.com)
通用寄存器包括r0~r15,可以分为三类:
(1)未分组寄存器r0~r7;
(2)分组寄存器r8~r14;
(3)程序计数器pc(r15)。
1.未分组寄存器r0~r7
在所有的运行模式下,未分组寄存器都指向同一个物理寄存器,它们未被系统用作特中数据的破坏。
2.分组寄存器r8~r14
对于分组寄存器,它们每一次所访问的物理寄存器与处理器当前的运行模式有关。对于r8~r12来说,每个寄存器对应2个不同的物理寄存器,当使用fiq模式时,访问寄存器rs__fiq~r12_fiq;当使用除πq模式以外的其他模式时,访问寄存器rs_usr~r12_usr。
对于r13、r14来说,每个寄存器对应6个不同的物理寄存器,其中的一个是用户模式与系统模式共用的,另外5个物理寄存器对应于其他5种不同的运行模式。采用以下的记号来区分不同的物理寄存器。
r13_<ode>
r14_<mode>
其中,mode为以下几种模式之一:usr、fiq、trq、svc、abt、und。
寄存器r13在arm指令中常用作堆栈指针,用户也可使用其他寄存器作为堆栈指针。而在thumb指令集中,某些指令强制性地要求使用r13作为堆栈指针。
由于处理器的每种运行模式均有自己独立的物理寄存器r13,所以在用户应用程序的初始化部分,一般都要初始化每种模式下的r13,使其指向该运行模式的栈空间。这样,当程序的运行进入异常模式时,可以将需要保护的寄存器放入r13所指向的堆栈,而当程序从异常模式返回时,则从对应的堆栈中恢复,采用这种方式可以保证异常发生后程序的正常执行。
r14也称作子程序链接寄存器(subroutine link register)或链接寄存器lr(linkregister)。当执行子程序调用指令(bl指令)时,r14中得到r15(程序计数器pc)的备份。其他情况下,r14用作通用寄存器。与之类似,当发生中断或异常时,对应的分组寄存器r14_svc、r14 lrq、r14_fiq、r14_abt和r14_und用来保存r15的返回值。
寄存器r14常用在如下的情况:在每一种运行模式下,都可用r14保存子程序的返回地址,当用bi.或blx指令调用子程序时,将pc的当前值拷贝给r14,执行完子程序后,又将r14的值拷贝回pc,即可完成子程序的调用返回ρ以上的描述可用指令完成。
首先执行以下任意一条指令:
欢迎转载,信息来源维库电子市场网(www.dzsc.com)
上一篇:ARM程序状态寄存器
热门点击
- ARM通用寄存器
- FIQ异常的描述
- Viterbi译码
- ARM程序状态寄存器
- ARM时序
- ARM乘法指令
- Thumb状态下的寄存器
- ARM异常的响应及返回
- ARM状态寄存器访问指令
- 常用自动控制系统设计的案例要求和应用对象
推荐技术资料
- DFRobot—玩的就是
- 如果说新车间的特点是“灵动”,FQPF12N60C那么... [详细]