关于ARM9和ARM7中都是PC=当前执行指令地址+8的解释
2016-11-19 21:56
246 查看
ARM7是三级流水线,AMR7的三级流水线如下:
ARM9是五级流水线,ARM9的五级流水线如下:
R15(PC)总是指向“正在取指”的指令,而不是指向“正在执行”的指令或正在“译码”的指令。一般来说,人们习惯性约定将“正在执行的指令作为参考点”,称之为当前第一条指令,因此PC总是指向第三条指令。当ARM状态时,每条指令为4字节长,所以PC始终指向该指令地址加8字节的地址,即:PC值=当前程序执行位置+8;
可见,ARM9和ARM7中都是PC=当前执行指令地址+8的根本的原因是,两者的流水线设计中,指令的执行阶段都是处于流水线的第三级。
转自:http://blog.csdn.net/csuwzc/article/details/6567754
执行 指令地址=0 | | | | | |
取指 PC = 4 | 解码 | 执行 指令地址=4 | | | |
| 取指 PC = 8 | 解码 | 执行 指令地址=8 | | |
| | 取指 PC = 12 | 解码 | 执行 指令地址=12 | |
| | | 取指 PC = 16 | 解码 | 执行 指令地址=16 |
ARM9是五级流水线,ARM9的五级流水线如下:
执行 指令地址=0 | | | | | |
取指 PC = 4 | 解码 | 执行 指令地址=4 | 缓存/数据 | 回写 | |
| 取指 PC = 8 | 解码 | 执行 指令地址=8 | 缓存/数据 | 回写 |
| | 取指 PC = 12 | 解码 | 执行 指令地址=12 | 缓存/数据 |
| | | 取指 PC = 16 | 解码 | 执行 指令地址=16 |
R15(PC)总是指向“正在取指”的指令,而不是指向“正在执行”的指令或正在“译码”的指令。一般来说,人们习惯性约定将“正在执行的指令作为参考点”,称之为当前第一条指令,因此PC总是指向第三条指令。当ARM状态时,每条指令为4字节长,所以PC始终指向该指令地址加8字节的地址,即:PC值=当前程序执行位置+8;
可见,ARM9和ARM7中都是PC=当前执行指令地址+8的根本的原因是,两者的流水线设计中,指令的执行阶段都是处于流水线的第三级。
转自:http://blog.csdn.net/csuwzc/article/details/6567754
相关文章推荐
- 关于ARM9和ARM7中都是PC=当前执行指令地址+8的解释
- 关于ARM9和ARM7中都是PC=当前执行指令地址+8的解释
- 关于ARM9和ARM7中都是PC=当前执行指令地址+8的解释
- 关于ARM9和ARM7中都是PC=当前执行指令地址+8的解释
- 关于ARM9和ARM7中都是PC=当前执行指令地址+8的解释
- 关于ARM9和ARM7中都是PC=当前执行指令地址+8的解释
- arm:PC=当前执行指令地址+8
- ARM处理器中PC值=当前指令地址 + 8的根本原因
- 获取当前指令执行地址
- 关于Android中调用了post方法后貌似没有执行run方法的解释及解决办法
- 关于KEIL C里如何执行系统不能识别的新指令
- 关于初学者该选择学习ARM7还是ARM9的一点建议
- arm处理器中a5 a8 a9,v6 v7,arm7 arm9 arm11都是依据什么来分类的
- 关于两个小东东的分析(函数执行值与函数的预编译跟解释执行阶段)
- 获取当前指令地址汇编指令
- 8086PC读取和执行指令相关部件
- 关于执行free函数的时候提示” double free or corruption“错误的解释和解决办法
- 嵌入式学习笔记--关于ARM中SWP指令的执行顺序问题【待验证】
- 关于Sql关键字SELECT FROM GROUP ORDER 等的执行顺序问题的解释
- 关于中断出发时PC指针回零解释