作者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/m.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