位置:51电子网 » 技术资料 » 嵌入式系统

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)



相关IC型号

热门点击

 

推荐技术资料

DFRobot—玩的就是
    如果说新车间的特点是“灵动”,FQPF12N60C那么... [详细]
版权所有:51dzw.COM
深圳服务热线:13692101218  13751165337
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!