DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 130|回复: 0
打印 上一主题 下一主题

ARM通用寄存器

[复制链接]
跳转到指定楼层
楼主
发表于 2012-1-16 18:41:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

                      通用寄存器包括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_
  R14_
  其中,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)
            
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-11-14 22:50 , 耗时 0.083688 秒, 18 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表