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通常用作堆栈指针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,即可完成子程序的调用返回。典型的做法如下: ●执行以下任意一条指令: 图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将来版本的扩展冲突。
R13_
R14_
其中,mode为以下几种模式之一:USR、FIQ、IRQ、SVC、ABT和UND。
MOV PC,LR ;R14复制到PC,实现子程序的返回
BX LR ;跳到LR指的地址处执行程序,实现子程序的返回
●在子程序入口处使用以下指令将R14存入堆栈:
STMFD SP!,{
对应的,使用以下指令可以完成子程序返回:
LDMFD SP!,{
上一篇:ARM9_S3C2440学习(六)SDRAM内存分配
下一篇:ARM9_S3C2440学习(三)FCLK/HCLK和PCLK
推荐阅读
史海拾趣
固驰电子深知产品质量是企业生存之本,因此始终将品质控制放在首位。公司不仅建立了完善的质量管理体系,还通过了ISO9001:2015质量管理体系认证和美国UL产品认证,这标志着固驰电子的产品质量达到了国际先进水平。此外,公司还积极申请专利,目前已拥有50项国家专利,进一步巩固了其在行业内的技术领先地位。
在电子产品行业,产品质量是企业生存和发展的基石。Datakey Electronics始终坚守品质至上的原则,从原材料采购到生产流程控制,再到产品检验和售后服务,每一个环节都严格把关。正是这种对品质的执着追求,使Datakey Electronics的产品在市场上树立了良好的口碑,赢得了客户的信赖。
在追求经济效益的同时,3E SECURITY公司始终关注社会责任。公司积极参与社会公益活动,支持教育事业和环境保护事业。同时,公司还加强了对员工的人文关怀和职业发展支持,为员工提供了良好的工作环境和成长空间。这些举措不仅提升了公司的社会形象,还增强了员工的归属感和忠诚度,为公司的长期发展奠定了坚实的基础。
请注意,以上故事纯属虚构,仅用于展示电子行业中安全公司可能的发展路径和经历。实际情况可能因公司策略、市场环境等因素而有所不同。如果您需要关于3E SECURITY公司的真实发展故事,建议您查阅相关资料或联系该公司进行了解。
在追求经济效益的同时,3E SECURITY公司始终关注社会责任。公司积极参与社会公益活动,支持教育事业和环境保护事业。同时,公司还加强了对员工的人文关怀和职业发展支持,为员工提供了良好的工作环境和成长空间。这些举措不仅提升了公司的社会形象,还增强了员工的归属感和忠诚度,为公司的长期发展奠定了坚实的基础。
请注意,以上故事纯属虚构,仅用于展示电子行业中安全公司可能的发展路径和经历。实际情况可能因公司策略、市场环境等因素而有所不同。如果您需要关于3E SECURITY公司的真实发展故事,建议您查阅相关资料或联系该公司进行了解。
面对日益严峻的环境问题,Banner Engineering公司积极践行绿色环保理念,推动企业的可持续发展。公司在生产过程中采用了环保材料和工艺,减少了对环境的污染。同时,公司还致力于开发节能高效的传感器产品,帮助客户降低能源消耗和减少碳排放。此外,公司还积极参与公益活动和社会责任项目,为社会和环境做出积极贡献。
这些故事展示了Banner Engineering公司在电子行业发展中不断创新、拓展市场、提升质量、践行环保理念的发展历程。正是这些努力使公司成为了电子行业中具有影响力的企业之一。
随着全球对环保问题的日益关注,Eurosil也积极响应这一趋势。公司注重环保和可持续发展,在生产过程中采取了一系列环保措施,如减少废弃物排放、提高能源利用效率等。同时,Eurosil还积极研发环保型电子产品,为客户提供更加绿色、健康的产品选择。
Microsoft Windows CE Bootloader Common Library Version 1.4 Built Aug 25 2009 11:32:52 Microsoft Windows WM600 Bootloader HISI K3B831 USB1.1 NDIS Built Aug 25 2009 System ready! Preparing for download... INFO: *** Device Name&n ...… 查看全部问答∨ |
|
请教版主,我用的dec33的评估板,想问个bootload的问题? 我用的dec33的评估板,我看了它的例子,bootloader.asm和主程序代码没有联系,生成了一个out文件,把这个文件烧进去后,bootloader.asm是怎么运行的啊,没看到对这个程序的调用什么的,是通过什么实现的啊?请高手指教!!万分感谢!!… 查看全部问答∨ |
|
刚才看到一个网友提的关于JLINK的问题,我想这个文档可能会对你有所帮助。 很高兴认识大家。 [ 本帖最后由 desk1983 于 2011-4-15 21:28 编辑 ]… 查看全部问答∨ |
|
TI的应用笔记比较丰富,不过基本都是E文版本的! 自己借助翻译工具,一个字一个字啃下来,很难理解里面真正的含义! 如果有中文的就方便很多了!… 查看全部问答∨ |
|
学习了四年的电子信息工程专业,毕业了,找的工作单位是做工程类的,平常基本没什么活,感觉学不到什么东西。现在公司业务向外地扩展,同意了老板调派我去外地的要求,以为是技术支持的角色,可是呢,公司刚成立,处理的都是繁琐的事情,而且公司一 ...… 查看全部问答∨ |
各位坛友好,我的TFT触摸屏在调试触摸部分是有点问题: 在触摸时如果连续多次触摸会产生白屏,但是程序应该没有问题吧,我已经看了多次了。 TFT的显示绝对没问题,已经写过几十次了,希望调试过触摸部分的坛友分享下自己的经验哈,坐等中~~~~ 小 ...… 查看全部问答∨ |