arm寄存器之r14,r15
来源:互联网 发布:mac 把文件复制到u盘 编辑:程序博客网 时间:2024/04/30 00:54
最近在学习ARM,发现多出一个R14寄存器(LR:返回连接寄存器),不是有PC指针寄存器(R15)了吗,怎么还需要这个呢?
于是在网上查找各种资料,发现了其中的秘密:
先看定义:
(1)PC是程序计数器,存储将要执行的指令地址
(2)LR是链接寄存器,是ARM处理器中一个有特殊用途的寄存器,当调用函数时,返回地址即PC的值被保存到LR中(mov lr,pc)。
(3)IR是指令寄存器,用来保存当前正在执行的一条指令。当执行一条指令时,先把它从内存取到数据寄存器(DR)中,然后再传送至IR。
区别:
(1)IR是微体系结构概念(什么是微体系结构?就是程序员看不到,但硬件中确实存在的硬件逻辑,只有系统设计者知道其存在。),而LR是程序员可见的寄存器。比如用gdb调试程序时,如果打印LR寄存器内容是可以看到其值的,但是打印IR是不可能的。
(2)LR是PC的备份,PC寄存器存的是将要执行的指令的地址;IR存的是将要送到ALU等部件执行的指令内容。
异常的发生会导致程序正常运行的被打断,并将控制流转移到相应的异常处理(异常响应),有些异常(fiq、irq)事件处理后,系统还希望能回到当初异常发生时被打断的源程序
断点处继续完成源程序的执行(异常返回),这就需要一种解决方案,用于记录源程序的断
点位置,以便正确的异常返回。
也需要记录下主程序中的调用点位置,以便将来的子程序的返回。
模式共用一个 LR,每种异常模式都有各自专用的R14 寄存器(LR )。这些链接寄存器分别
为 R14、R14_svc、R14_abt、R14_und、R14_irq、R14_fiq,
接下来我们讨论下,为什么PC指针不是每次都加1,而是加上一个固定的常数,此常数跟芯片内核架构有关。
冯 ·诺伊曼计算机体系结构的主要内容之一就是“程序预存储,计算机自动执行”!处理器要执行的程序(指令序列)都是以二进制代码序列方式预存储在计算机的存储器中,处理器将这些代码逐条地取到处理器中再译码、执行,以完成整个程序的执行。为了保证程序能够连续地执行下去,CPU必须具有某些手段来确定下一条取指指令的地址。程序计数器(PC )正是起到这种作用,所以通常又称之为‘指令计数器’。CPU总是按照PC的指向对指令序列进行取指、译码和执行,也就是说,最终是PC 决定了程序运行流向。故而,程序计数器(PC )属于特别功能寄存器范畴,不能自由地用于存储其他运算数据。
其最低两位一定是‘00’。ARM 体系要求32 位长的ARM 指令在存储器中必须字对齐存储,
16 位长的 Thumb 指令必须半字对齐存储。因此,在ARM 状态下,R15
除,也就是R15 寄存器的最低2 位总是 0;Thumb 状态下,R15 的值总是能被2 整除,也就是R15 寄存器的最低位总是0。
- arm寄存器之r14,r15
- ARM寄存器R13/R14/R15
- ARM寄存器(R13/R14/R15)
- ARM寄存器(R13/R14/R15)
- ARM寄存器(R13/R14/R15)
- arm中R0-R15寄存器的作用
- arm中R0-R15寄存器的作用
- cheng@ARM结构与编程之day2-ARM寄存器(R0~R15)
- ARM寄存器中R0~R15寄存器的别名
- R14寄存器
- ARM汇编中lr(r14)寄存器的作用
- ARM汇编中LR(R14)寄存器的作用
- ARM汇编中lr(r14)寄存器的作用
- ARM汇编中lr(r14)寄存器的作用
- LR(R14)寄存器
- r0-r15寄存器的作用
- ARM汇编之寄存器
- ARM汇编之寄存器
- Bypassing iPhone Code Signatures - 待翻译
- windows远程桌面如果超出最大连接数, 使用命令行mstsc /console登录即可
- 浏览目录创建别名
- Django 1.6Admin(二)
- POJ-3278 Catch That Cow(广搜+剪枝)
- arm寄存器之r14,r15
- VS2008的绿色精简版,只有VC2008部分
- 解决mysql服务无法启动问题
- 主窗口关闭后,主进程没有退出的解决办法
- iOS学习之 plist文件的读写
- 一次性批量删除Windows下的.svn文件的技巧
- 发送dhcp request/response 过程 on Neutron+OVS agent
- 《Erlang程序设计中文版》-读书笔记
- ldid