历史上的今天

今天是:2024年09月18日(星期三)

正在发生

2021年09月18日 | ARM9_S3C2440学习(二)ARM状态下的寄存器组织

发布者:声慢慢 来源: eefocus关键字:ARM9  S3C2440  寄存器组织 手机看文章 扫描二维码
随时随地手机看文章

ARM状态下的寄存器组织见图2.3。ARM有37个32位长的寄存器,包括31个通用寄存器、1个当前程序状态寄存器CPSR(current program status register)、5个备份的程序状态寄存器SPSR(saved program status register)。这37个寄存器并不都是同时可见的。在任意时刻,只有16个通用寄存器(R0~R15)和一个或者两个状态寄存器(CPSR和SPSR)对处理器来讲是可见的。


1. 通用寄存器

31个通用寄存器用R0~R15表示,可以分为三类:
●未分组寄存器R0~R7。
●分组寄存器R8~R14。
●程序计数器PC(R15)。

(1)未分组寄存器R0~R7

  在所有的运行模式下,未分组寄存器都指向同一个物理寄存器,它们未被系统用作特殊的用途,因此,在中断或异常处理进行运行模式转换时,由于不同的处理器运行模式均使用相同的物理寄存器,可能会造成寄存器中数据的破坏,这一点在进行程序设计时应引起注意。

 

(2)分组寄存器R8~R14

  对于分组寄存器,它们每一次所访问的物理寄存器与处理器当前的运行模式有关。

  对于R8~R12来说,每个寄存器对应两个不同的物理寄存器,当使用FIQ模式时,访问寄存器R8_fiq~R12_fiq;当使用除FIQ模式以外的其他模式时,均访问寄存器R8_usr~R12_usr。


  对于R13、R14这两个寄存器来说,每个寄存器各有6个不同的物理寄存器,其中的一个是用户模式与系统模式共用的,另外5个物理寄存器分别用于5种异常模式。


  采用以下的记号来区分不同的物理寄存器:
R13_
R14_
其中,mode为以下几种模式之一:USR、FIQ、IRQ、SVC、ABT和UND。

  寄存器R13通常用作堆栈指针SP(stack pointer),但这只是一种习惯用法,用户也可使用其他的寄存器作为堆栈指针。而在Thumb指令集中,某些指令强制性的要求使用R13作为堆栈指针。


  在实际使用中,一般会在存储器中分配一些空间作为堆栈,由于处理器的每种运行模式均有自己独立的物理寄存器R13,在用户应用程序的初始化部分,一般都要初始化每种模式下的R13,使其指向该运行模式的栈空间。这样,当程序的运行进入异常模式时,可以将需要保护的寄存器放入R13所指向的堆栈,而当程序从异常模式返回时,则从对应的堆栈中恢复寄存器的内容,采用这种方式可以保证异常发生后程序的正常执行。


  R14也称作子程序连接寄存器(subroutine link register)或连接寄存器LR,当执行分支指令BL时,R14中得到R15(程序计数器PC)的备份。其他情况下,R14用作通用寄存器。类似地,当发生中断或异常时,或当程序执行BL指令时,对应的分组寄存器R14_svc、R14_irq、R14_fiq、R14_abt和R14_und用来保存R15(PC)的返回值。


  寄存器R14常用在如下的情况:在每一种运行模式下,都可用R14保存子程序的返回地址,当用BL或BLX指令调用子程序时,将子程序的返回地址(在PC中)复制给R14,执行完子程序后,又将R14的值复制回PC,即可完成子程序的调用返回。典型的做法如下:

●执行以下任意一条指令:
MOV PC,LR ;R14复制到PC,实现子程序的返回
BX LR ;跳到LR指的地址处执行程序,实现子程序的返回
●在子程序入口处使用以下指令将R14存入堆栈:
STMFD SP!,{,LR}
对应的,使用以下指令可以完成子程序返回:
LDMFD SP!,{,PC}

图2.4是这种方法的一个实现。

(3)程序计数器PC(R15)

  寄存器R15用作程序计数器PC(program counter)。在ARM状态下,所有指令都是32位宽,所有的指令必须字对齐,所以PC的值由位[31:2]决定,位[1:0]是0(在Thumb状态下,必须半字对齐,位[0]为0,PC的值由位[31:1] 决定)。R15虽然也可用作通用寄存器,但一般不这么使用,因为R15的值通常是下一条要取出的指令的地址,因此使用时有一些特殊的限制,当违反了这些限制时,程序的执行结果是未知的。


  由于ARM7采用了三级流水线技术,指令读出的PC值是指令地址值加8个字节。


2. 程序状态寄存器

  ARM的程序状态寄存器PSR(program status register)有1个当前程序状态寄存器CPSR和5个备份的程序状态寄存器SPSR。CPSR用来标识(或设置)当前运算的结果、中断使能设置、处理器状态、当前运行模式等。而SPSR则是当异常发生时,用来保存CPSR当前值,以便从异常退出时用SPSR来恢复CPSR。处理器在所有工作模式下都可访问CPSR,不同模式的CPSR是同一个物理寄存器。而每一种异常模式下都有一个SPSR,它们对应不同的物理寄存器。由于用户模式和系统模式不属于异常模式,他们没有SPSR,当在这两种模式下访问SPSR,结果是未知的。CPSR、SPSR都是32位寄存器,它们的格式是相同的,如图2.5所示。

(1)条件标志位 N、Z、C、V

  N、Z、C、V(negative、zero、carry、overflow)位称为条件码标志(condition code flags),经常以标志引用,它们的内容可被算术或逻辑运算的结果改变,ARM指令可以根据这些条件标志,选择性地执行后续指令(条件执行),条件码标志各位的具体含义如表2.2所示。

(2)Q标志位

  在ARMv5及以上版本的E系列处理器中,CPSR中的Q标志位指示增强的DSP运算指令是否发生了溢出。SPSR中的标志位Q用于当异常出现时保留和恢复CPSR中的Q标志。在其他版本的处理器中,Q标志位未定义。


(3)控制位

  PSR的低8位I、F、T和M[4:0]统称为控制位,当发生异常时这些位发生变化,如果处理器运行于特权模式下,这些位也可以由软件修改。


I和F位是中断禁止位:I置1则禁止IRQ中断,F置1则禁止FIQ中断。

  T位反映了处理器的运行状态,对不同版本的ARM处理器,T位含义不同。

  对于ARM体系结构v3以及更低的版本和v4的非T系列版本处理器,T位应当为0。在这些版本中,没有ARM和Thumb状态之间的切换。

  对于ARM体系结构v4及以上版本的T系列处理器,T的含义为:T=0表示执行ARM指令,T=1表示执行Thumb指令。

  在这些结构体系中,可以自由地使用能在ARM和Thumb状态之间切换的指令。

  对于ARM体系结构v5及以上版本的非T系列处理器,T的含义为:T=0表示执行ARM 指令,T=1表示强制下一条执行的指令产生未定义指令异常。

  M[4:0](M0、M1、M2、M3、M4)是模式位,这些位决定处理器的工作模式,具体含义如表2.3所示。

M[4:0]其他的组合结果会导致处理器进入一个不可恢复的状态。


(4)其他位

  PSR中的其余位为保留位,保留位将用于ARM版本的扩展。应用软件不要操作这些位,以免与ARM将来版本的扩展冲突。

关键字:ARM9  S3C2440  寄存器组织 引用地址:ARM9_S3C2440学习(二)ARM状态下的寄存器组织

上一篇:ARM9_S3C2440学习(六)SDRAM内存分配
下一篇:ARM9_S3C2440学习(三)FCLK/HCLK和PCLK

推荐阅读

退出隐身模式,Habana Labs推出生产就绪型Goya™ HL-1000处理器Habana Labs, Ltd. (www.habana.ai) 17日宣布,该公司正式退出隐身模式,将面向精选客户推出首个人工智能 (AI) 处理器样品。基于其 Goya HL-1000 处理器的 PCIe 卡可基于 ResNet-50 推理基准实现每秒15000张图片的吞吐量,延迟时间为1.3毫秒,功耗仅为100瓦。与如今数据中心部...
近日,华为创始人兼CEO任正非在接受《经济学人》的采访时,再次谈及退休问题,“我会在我思维跟不上的时候退休的,我现在还是才思泉涌的状态,再呆几天吧!” 据悉,阿里巴巴创始人马云在55岁提前退休引起了业界关注。西方有意见认为,中国许多企业的领导人退休太晚,实际上会对企业的发展产生不利的影响不利。如今,华为正处于一个艰难的大环境,及时更换...
依图科技已于 9 月 9 日同国泰君安证券签署辅导协议,并于同日在上海证监局备案,拟以公开发行中国存托凭证(CDR)的方式在 A 股上市。 至此,中国 AI“四小龙”中有两家正式启动 IPO 计划。“四小龙”包括云从科技、依图科技、旷视科技和商汤科技四家公司。 今年 8 月,云从科技已启动 A 股上市辅导,AI 龙头 IPO 是否就此拉开序幕? “...
简化无线连接设计,贸泽电子将携手Silicon Labs举办Mesh技术在线研讨会2021年9月18日-专注于引入新品推动行业创新的电子元器件分销商贸泽电子 (Mouser Electronics) 宣布将携手Silicon Labs于9月24日14:00 -15:00举办Mesh无线技术应用在线研讨会。 届时,来自Silicon Labs的技术专家将为大家分享Mesh无线技术应用知识,让工程师能够利用Mesh技术...

史海拾趣

问答坊 | AI 解惑

一些经典CC++程序源码

这是一些经典的C或C++得程序源码,希望对大家的学习有帮助…

查看全部问答∨

2005年全国电子大赛作品文集含源码

本帖最后由 paulhyde 于 2014-9-15 09:08 编辑 2005年全国电子大赛作品文集含源码,(凌阳单片机)希望对大家有帮助  …

查看全部问答∨

跪求单片机控制无线模块的程序

本帖最后由 paulhyde 于 2014-9-15 09:43 编辑 rt  …

查看全部问答∨

TI2000系列DSP开发应用【视频】

传一个小视频 TI2000系列DSP开发应用【视频】…

查看全部问答∨

声纳传感器有人用过吗

来自EEWORLD合作群:arm linux fpga 嵌入0(49900581)…

查看全部问答∨

3D电视国标制定完成或试水亚运会

本帖最后由 jameswangsynnex 于 2015-3-3 19:56 编辑 中国拥有完整知识产权的3D电视系统已经制定完成。昨日(7月21日),《每日经济新闻》从数字音视频解码技术标准工作组 (以下简称“AVS工作组”)获悉,最新版本的标准已经于六月底完成定稿,今日将 ...…

查看全部问答∨

IIC地址问题

我们公司的一个项目,W78E52往W78E58传送数据, W78E52用的是P3^2、P3^3发送,W78E58用P2^0、P2^1来接收; 想问下是通过什么传送的呢,IIC吗?那怎么知道这2个芯片的地址呢? 还是其它传送? 请高手指教,帮帮忙,谢谢! …

查看全部问答∨

求图;红外传感器识别人的电路图,用51单片机做的

想通过单片机及红外传感器识别人的存在,但是不知道电路图,哪位大虾可以帮帮我吗?…

查看全部问答∨

allegro16.2无法去死铜

allegro是从verycd下的,版本16.2,按照软件包内破解教程完成所有步骤问题:       板子布完后发现死铜无法去除,用shape下那个delete islands没有效果,求解!!!…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved