作者befdawn (蜜蜂P助)
看板Grad-ProbAsk
标题[理工] 计组 branch 与 pc
时间Wed Oct 31 11:22:55 2018
https://i.imgur.com/qdyv65j.jpg
请问这题,能懂 branch 执行後会跳到 42 的算法,但 pc 是不是要再指向下一个指令
也就是 46 的位址吗?
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 180.217.65.22
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Grad-ProbAsk/M.1540956178.A.FFC.html
1F:推 mirror0227: 10+4? 10/31 11:26
2F:推 frank010180: 在每个指令执行IF的时候 PC就先+4了 10/31 11:34
3F:→ frank010180: 所以对branch做加总後会准确的到该目标位址 10/31 11:36
4F:→ frank010180: 可以trace一下电路图会更了解 10/31 11:37
5F:→ frank010180: 以上有误请指证 10/31 11:37
6F:推 bmpss92196: 目前位置是10,下一个是42,pc不就该放42 10/31 13:00
7F:推 meokay: 等到42执行时,才会指到46 10/31 14:13
8F:→ o5739201: Beq 指令位址是10 11/01 19:58
9F:→ o5739201: 而读到beq时pc已经+4了 变14 11/01 19:58
10F:→ o5739201: 这时如果跳 就往 14+7*4=42 地址抓指令 11/01 19:59
11F:→ o5739201: 而你说的46是42指令在ID阶段pc+4(也就是跳跃目的的下一 11/01 19:59
12F:→ o5739201: 个指令) 11/01 19:59
13F:→ befdawn: 谢谢大家 所以是42 被 taken 只是被读到而已,还没被执 11/03 19:18
14F:→ befdawn: 行吗? 11/03 19:18
15F:→ befdawn: 我再看了一次,原来是branch 读取时若被接受,PC直接跳 11/03 22:01
16F:→ befdawn: 到42。谢谢楼上大大们的解释 11/03 22:01