arm 流水线问题

[复制链接]
2933|7
 楼主| 风宇一号 发表于 2010-2-4 20:52 | 显示全部楼层 |阅读模式
汇编跳转问题:

JMP   取指令  译码   执行
add             取指令 译码  执行
sub                       取指令 译码 执行

当JMP 执行时,PC是指向 SUB 的,那跳转后,是把PC的地址 保存到 R14中吗?
还是把ADD的地址保存到R14中?
谢谢!
不胜感激
file:///C:/Documents%20and%20Settings/Administrator/%E6%A1%8C%E9%9D%A2/%E6%9C%AA%E5%91%BD%E5%90%8D.jpg
 楼主| 风宇一号 发表于 2010-2-4 20:53 | 显示全部楼层
不是跳转,说错了,是跳到子程序中,要返回来! 返回地址是什么?
ToCreater 发表于 2010-2-4 20:53 | 显示全部楼层
 楼主| 风宇一号 发表于 2010-2-4 20:57 | 显示全部楼层
3# ToCreater
 楼主| 风宇一号 发表于 2010-2-4 20:59 | 显示全部楼层
3# ToCreater

PC的话,那么不是漏掉 中间的一条指令了吗?
xinzha 发表于 2010-2-5 09:04 | 显示全部楼层
ARM并不是标准的RISC流水线,没有延迟槽的概念,可以去看一下ARM官方的ARCH文档,跳转之后的LR记录的是跳转的下一条指令。下面是arm v5的arch文档中关于B/BL的伪代码描述
Operation
if ConditionPassed(cond) then
if L == 1 then
    LR = address of the instruction after the branch instruction
PC = PC + (SignExtend_30(signed_immed_24) << 2)
dream_blue 发表于 2010-2-6 13:31 | 显示全部楼层
把ADD的地址保存在R14中
toner 发表于 2010-2-8 14:01 | 显示全部楼层
7楼正解
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

6

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部