关于ARM寄存器组及工作模式知识.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
关于ARM寄存器组及工作模式知识

关于ARM寄存器组及工作模式知识(周方辉)2012/8/10编改记录编写日期内容概要2012-08-10创建目 录1参考文献21.1内部参考文献21.2外部参考文献22名词解释23ARM核工作模式23.1程序状态寄存器33.2寄存器分组43.3何为特权(异常)模式63.4各种模式工作机制73.5各种模式工作返回用户模式机制94ARM核工作模式初始化参考代码11参考文献内部参考文献内部参考文献指的是周方辉自生的百度博文中的文件。无内部参考文献。外部参考文献外部参考文献指的是相对于上述内部参考文献以外的文件。《ARMv8_ISA_PRD03-GENC-010197-24-0.pdf》《cortex_a8_r3p2_trm.pdf》《CortexA8TechRefManul.pdf》名词解释CPSR:当前程序状态寄存器,其数值反映出当前程序运行的一些状态指示。SPSR:保存程序状态寄存器,在程序调用等情况下,需要保存一下当前程序状态寄存器的值(SPSR=CPSR),便于日后回复。SP:堆栈指针寄存器,其值用于执行当前堆栈栈顶(或栈底)位置。PC: 程序指针寄存器,其值用于指向要执行的程序代码地址。LR:连接返回寄存器,保存要返回的地址,PC=LR。ARM核工作模式常规CPU工作核心模块都是由:寄存器组和ALU两大模块组成,ALU完成数据的加工处理,寄存器用来保存数据,这些数据是直接参与ALU运算。ARM的处理器也不例外。ARM处理器的寄存器分成许多组,不同的组完成不同环境下的工作,不过它们都共用一套ALU数据处理模块。ARM寄存器一般用了37个,Cortex A8的ARM核的寄存器多大40个。我们学习ARM工作模式需要了解和解决下面问题:ARM寄存器为什么要分组?又是如何分组?各组与CPU工作模式是如何关联?各个组或工作模式是如何切换的?我们在学习ARM寄存器分组工作模式之前,先来看一下很特殊的一个寄存器——PSR程序状态寄存器。程序状态寄存器程序状态寄存器是一个32bits的寄存器,它记录和指示出当前程序运行状态。格式如下:313029282726-252423-2019-16150NZCVQIT[1:0]JDNMGE[3:0]IT[7:2]EAIFTM[4:0]条件状态位:N:Negative/Less than,负数/小于0,而置1。Z:Zero,为0时该位置1。C:Carry/Borrow/Extend,发生了进位/借位/扩伸,该位将置1。V:Overflow,溢出时该位置1。它们之间关系:指令中的条件编码码记助符PSR中标志位用意0000EQZ=1相等0001NEZ=0不相等0010CSC=1=(无符号数)0011CCC=1(无符号数)0100MIN=1负数0101PLN=0正数或为零0110VSV=1溢出0111VCV=0未溢出1000HIC=1,且Z=0(无符号数)1001LSC=0,且Z=1=(无符号数)1010GEN=V=(带符号数)1011LTN!=V(带符号数)1100GTZ=0,且Z==V(带符号数)1101LEZ=1,或N!=V=(带符号数)1110AL忽略无条件执行Q:Sticky overflow,饱和计算溢出标志。(有符号运算,确保数的极性不会翻转)发生时溢出,该位置1。例如:假设8bits符号数据,125+9=127,133超过127成为负数,而Q算法保持127最大数,确保不会变成负数。IT[7:0]:[7:2]用于IF….ELSE…条件执行状态位。GE[3:0]:用于SIMD指令,大于或等于。使能控制位:A:A=1时,禁止不确定数据异常。I:IRQ中断使能位,当其置1时,禁止IRQ发生。F:FIQ中断使能位,当其置1时,禁止FIQ中断。指令类别状态位:J:Java state bit,当T为1时,J=0,表示执行Thumb指令状态,J=1表示执行ThumbEE指令状态。T:当其为1是表示执行Thumb指令状态(或ThumbEE,这依赖于J为要为1),当其为0时,表示执行ARM指令状态。When T=1,J=0 Thumb state,J=1 ThumbEE stateJT指令状态00ARM01Thumb10Jazelle11ThumbEE工作模式位:用来指示不同组寄存器与ALU协同工作M[4:0]:工作模式,b10000(0x10)用户模式(User);b10001(0x11)快速中断模式(FIQ);B10010(0x12)向量中断模式(IRQ);B10011(0x13)管理模式(Supervisor);B10111(0x17)异常模式(Abort),取数据失败时发生;B11011(0x1B)未定义模式(Undefined),指令解码出错时发生;B11111(0x1F)系统模式

文档评论(0)

kaiss + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档