看板 Grad-ProbAsk 關於我們 聯絡資訊
https://i.imgur.com/qdyv65j.jpg 請問這題,能懂 branch 執行後會跳到 42 的算法,但 pc 是不是要再指向下一個指令 也就是 46 的位址嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 180.217.65.22 ※ 文章網址: https://www.ptt.cc/bbs/Grad-ProbAsk/M.1540956178.A.FFC.html
mirror0227: 10+4? 10/31 11:26
frank010180: 在每個指令執行IF的時候 PC就先+4了 10/31 11:34
frank010180: 所以對branch做加總後會準確的到該目標位址 10/31 11:36
frank010180: 可以trace一下電路圖會更了解 10/31 11:37
frank010180: 以上有誤請指證 10/31 11:37
bmpss92196: 目前位置是10,下一個是42,pc不就該放42 10/31 13:00
meokay: 等到42執行時,才會指到46 10/31 14:13
o5739201: Beq 指令位址是10 11/01 19:58
o5739201: 而讀到beq時pc已經+4了 變14 11/01 19:58
o5739201: 這時如果跳 就往 14+7*4=42 地址抓指令 11/01 19:59
o5739201: 而妳說的46是42指令在ID階段pc+4(也就是跳躍目的的下一 11/01 19:59
o5739201: 個指令) 11/01 19:59
befdawn: 謝謝大家 所以是42 被 taken 只是被讀到而已,還沒被執 11/03 19:18
befdawn: 行嗎? 11/03 19:18
befdawn: 我再看了一次,原來是branch 讀取時若被接受,PC直接跳 11/03 22:01
befdawn: 到42。謝謝樓上大大們的解釋 11/03 22:01