arm中r13r14r15r13寄存器器的值各代表什么意义

【原创】ARM Cortex-M4寄存器及指令简介-garfield的博客
【原创】ARM Cortex-M4寄存器及指令简介
16:18 发表&&
系统分类:&&
自定义分类:
飞思卡尔kinetis系列处理器是基于arm cortex-m4内核的高性能处理器。arm cortex m4处理器的寄存器有:R0-R15,如图所示,其中R13作为堆栈指针SP。SP实际上有两个,但在同一时刻只能由一个可以看到,这就是所谓的banked模式。特殊功能寄存器有预定义的功能,而且必须通过专用的指令来访问。
1通用寄存器R0-R12
R0-R12是最具通用目的的32位通用寄存器,用于数据操作。32位的t'humb-2指令可以访问所有的通用寄存器。但是,绝大多数16位的thumb指令只能访问R0-R7。因而R0-R7有被称作低组寄存器,所有的指令都能访问他们。他们的字长全是32位的,复位后的初始值是不可预料的。R8-R12也被称作高组寄存器。这是因为只有很少的16位thumb指令能访问他们,32位指令则不受限制。他们也是32位字长,且复位后的初始值是不可预料的。
2 堆栈指针R13
R13是堆栈指针,在arm cortex m4处理器内核中共有两个堆栈指针,于是也就支持两个堆栈。当引用R13时,用户用到其中一个的话,另一个必须用特殊的指令来访问(MRS,MSR指令)因此任何时刻只能使用其中的一个,这两个堆栈指针分别为:
&&& 主堆栈指针(msp),或者写作sp_main,主堆栈指针是复位后缺省使用的堆栈指针,他由os内核,中断服务程序以及所有需要特权访问的应用程序代码来使用。
&&& 进程中断指针(psp),或写作sp_process,用于常规的应用程序代码,该堆栈一般供用户的应用程序代码使用。
需要注意的是,并不是每一个应用都用到这两个堆栈指针,简单的应用程序只用到msp就够了,堆栈指针用于访问堆栈,并且push指令和pop指令默认使用sp。另外,堆栈指针的最低两位永远是0,这意味着堆栈总是4字节对齐的。在arm编程领域中,凡是打断程序顺序执行的时间,都被称为异常。除了外部中断外,当指令执行了非法操作或者访问被禁止的内存区间,或者不可屏蔽中断发生时,都会打断程序的执行,这些情况统称为异常。在不严格的上下文中,异常与中断也可以混用。另外,程序代码也可以主动请求进入异常状态。
3 连接寄存器R14(LR)
当调用一个子程序时,由R14存储返回地址,不像大多数其他处理器,arm为了减少访问内存的次数,从而提高了子程序调用的效率。如果多于1级,则需要把前一级的R14值压到堆栈里。在arm编程时,应尽量只使用寄存器保存中间结果,在RISC处理器中,为了强调访问操作越过了处理器的界限,并且带来了对性能的不利影响,给它取了一个专业的术语--溅出。
4.程序计数寄存器R15
R15是程序计数器,指向当前的程序地址。如果修改它的值,就能改变程序的执行流。在汇编代码中也可以使用pc来访问它。因为arm cortex m4内部使用了指令流水线,读pc时返回的值是当前指令的地址+4.然而,在分支时,无论是直接写pc的值还是使用分支指令,都必须保证加载到pc的数值是奇数,用以表明这是在thumb状态下执行。倘若写了0,则视为企图转为arm模式,arm cortex m4将产生一个异常。
5特殊功能寄存器
arm cortex m4 还在内核水平上搭载了若干特殊功能寄存器,包括程序状态字寄存器组(psr或者xpsr)中断屏蔽寄存器组和控制寄存器,他们只能由专用的msr和mrs指令访问,而且他们也没有存储器地址。
1)程序状态寄存器
程序状态寄存器在其内部又被分成三个子状态寄存器:应用程序PSR,中断号PSR,执行PSR。通过MRS和MSR指令,这三个PSR既可以单独访问,也可以组合访问。
2)中断寄存器
这三个寄存器用于控制异常的使能和禁用。只有在特权级下,才允许访问这3个寄存器。对于时间关键任务来说,PRIMASK和BASEPRI对于暂时关闭中断是非常重要的。而fault-mask则可以被操作系统用于暂时关闭错误处理机能,这种处理在某个任务崩溃时可能需要。因为在任务崩溃时,常常伴随着大量的错误。在系统处理这些事物时,通常不再需要响应这些错误。总之FAULTMASK是专门留给操作系统用的。
3)控制寄存器
控制寄存器用于定义特权级别,主要用于选择当前使用哪个堆栈指针,
自定义分类
谢谢分享,学习了
加QQ一起讨论,QQ:
zan zan zawn
能不能具体介绍一下,需要配置哪些寄存器呢?
ADI热线电话:
ADI技术支持邮箱:china.链接寄存器_百度百科
链接寄存器
本词条缺少信息栏,补充相关内容使词条更完整,还能快速升级,赶紧来吧!
链接寄存器是ARM处理器中的一个有特殊用途的寄存器。
链接寄存器来源
在的user模式下,ARM CPU有16个数据寄存器,被命名为R0~R15(这个要比X86多一些),它们均为32位寄存器,其中的R13~R15有特殊用途。其中R14被称为“链接寄存器”(Link Register,LR)。
链接寄存器作用
当调用一个时,返回地址被自动保存到链接寄存器,在函数返回时有效。这使得快速进入和返回“叶”函数(不调用其它函数的函数)成为可能。如果函数是分支的一部分(即函数中又调用另一个函数),则链接寄存器必须入栈(R13)。r13,r14,r15 ,arm上这三个寄存器是干啥的,该如何解决 - 汇编语言当前位置:& &&&r13,r14,r15 ,arm上这三个寄存器是干啥的,该如何解r13,r14,r15 ,arm上这三个寄存器是干啥的,该如何解决&&网友分享于:&&浏览:299次r13,r14,r15 ,arm上这三个寄存器是干啥的r13,r14,r15 ,arm上这三个寄存器是干啥的CPSR是一个寄存器么?它的结构是怎么样的。例如说条件标志位,是干什么的。那些特殊寄存器会在执行指令的时候有潜在的影响?------解决方案--------------------
分别是:LR
------解决方案--------------------
应该是SP,LR PC吧?这3个主要1,用于指向堆栈,2,用于子程序连接时备份R15(PC)3,PC 程序计数器CPSR是一个寄存器,具体结构为[0:7]为控制位 其中[0:4]控制工作的模式 [5:7]分别是T F IT控制是使用thumb指令还是arm指令 F
I分别控制快速中断和中断[28:31]分别为VCZN条件标志,其余位保留CPSR,PC等会再执行指令时有潜在影响
------解决方案--------------------
你看arm处理器指令手册即可。
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关解决方案 12345678910 Copyright & &&版权所有嵌入式系统复习大纲(已整理大部分答案)_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
嵌入式系统复习大纲(已整理大部分答案)
上传于||暂无简介
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
下载文档到电脑,查找使用更方便
还剩4页未读,继续阅读
你可能喜欢

我要回帖

更多关于 r14和r15轮胎的区别 的文章

 

随机推荐