再次解释ARM 流水线 比如add r0, pc, #g_oalAddressTable - (. + 8)的问题
来源:互联网 发布:数据库设计谁来负责 编辑:程序博客网 时间:2024/05/29 08:43
// topic:再次解释ARM 流水线 比如add r0, pc, #g_oalAddressTable - (. + 8)的问题
// 作者:gooogleman
// 邮箱:gooogleman@foxmail.com
//网址:http://blog.csdn.net/gooogleman/article/details/7651548
关于add r0, pc, #g_oalAddressTable - (. + 8)这条指令,很多人曾经在CSDN论坛问过,我以前也回答过很多,现在居然在我的开发板技术支持群,还有人问起,并且貌似怎么说他也不明白。
其实他是陷入死胡同,非要用自己的思维去想。
其实这是ARM 约定的东西,ARM 用这种流水线的方式去做是非常科学的,就像我们现实中的工厂流水线方式,能够提高效率。
好了,这里不管是ARM7/ARM9/ARM11 也好,甚至是S5pv210 都是符合标题的写法的。原因如下:
R15(PC)总是指向“正在取指”的指令,而不是指向“正在执行”的指令或正在“译码”的指令。一般来说,人们习惯性约定将“正在执行的指令作为参考点”,称之为当前第一条指令,因此PC总是指向第三条指令。当ARM状态时,每条指令为4字节长,所以PC始终指向该指令地址加8字节的地址,即:PC值=当前程序执行位置+8;
在S3C6410 OK6410 real6410 eboot中有
add r11, pc, #g_oalAddressTable -(. + 8)
在在我做的Sate210 的winceeboot中也有:
add r11, pc, #g_oalAddressTable -(. + 8)
还不明白吗
那就去看看ARM的官文吧
完整的介绍请参考文档:http://www.arm.com/pdfs/comparison-arm7-arm9-v1.pdf
实在不行就再看看这段话的含义!
R15(PC)总是指向“正在取指”的指令,而不是指向“正在执行”的指令或正在“译码”的指令。一般来说,人们习惯性约定将“正在执行的指令作为参考点”,称之为当前第一条指令,因此PC总是指向第三条指令。当ARM状态时,每条指令为4字节长,所以PC始终指向该指令地址加8字节的地址,即:PC值=当前程序执行位置+8;
- 再次解释ARM 流水线 比如add r0, pc, #g_oalAddressTable - (. + 8)的问题
- 再次解释ARM 流水线 比如add r0, pc, #g_oalAddressTable - (. + 8)的问题
- add r0, pc, #OEMAddressTable-(.+8)指令引起的论坛讨论
- ARM 流水线(重点说明PC+8)
- arm 流水线和pc值
- arm 流水线和pc值
- arm 流水线和pc值
- ARM的流水线与PC值的关系
- ARM处理器三级流水线与PC,LR的关系
- ARM处理器三级流水线与PC,LR的关系
- ARM处理器三级流水线与PC,LR的关系
- ARM处理器三级流水线与PC,LR的关系
- PC值、ARM流水线、超流水线和冯诺依曼、哈佛结构
- Arm的三级流水线
- ARM汇编编程基础之二 —— 流水线对PC值的影响
- ARM汇编编程基础之二 —— 流水线对PC值的影响
- ARM汇编编程基础之二 —— 流水线对PC值的影响
- 关于ARM子程序跳转和中断跳转的流水线问题
- CentOS自动安装LAMP及环境简易配置
- process Bar的使用
- SSH key and Tectia key generation
- Android中使用GridView分页显示系统所安装的应用,支持拖动与手势滑动
- wordpress 备份
- 再次解释ARM 流水线 比如add r0, pc, #g_oalAddressTable - (. + 8)的问题
- Linux学习(二)
- 回复了一个令人郁闷的in传能问题
- 中关村海龙大厦-买本上当经历给大家提个醒
- 软件需求分析模版
- 实习所修改的bug总结
- 中英文操作系统差异问题汇总
- 使用三星 Nexus S 开始 Android 开发之旅
- eclipse的jar包引用和android.manifest的jar包引用区别