Re: [理工][計組] branch指令轉machine code

看板Grad-ProbAsk作者 (麥子)時間12年前 (2011/08/06 13:18), 編輯推噓5(502)
留言7則, 5人參與, 最新討論串2/2 (看更多)
※ 引述《a76126 (123)》之銘言: : 對branch指令轉machine code : 還有pc-relative addressing有點搞混 : 假設 : beq $s1 ,$s2 , 100 轉machine code ->4 17 18 25 : 意思是 如果相等 就branch到pc+25個指令 25個word 100個byte的意思? 如果我印象沒有錯的話,branch 的 PC-relative addressing , 不是相對於 PC ,而是相對於 PC + 4 。也就是 branch 的下一個指令。 原因是因為 non-taken 的時候自然就會執行 PC + 4 , 因此是以 PC + 4 為基準來往後面算。 所以上面這邊寫的是 PC 的下一個指令的再下 25 個指令。 也就是 PC + 4 + 100 這個位置的指令。 : 但另一題 : beq $1, $2 ,7 when pc = 10 ,what is the new pc if the branch taken? : new pc = 10 + 4 + 7 * 4 : 意思又好像是 branch到pc+7個指令 7個word : 請問後面的常數 意思是? 這邊的 4 就是要先算「下一個」指令,再開始算 branch 要跳的距離。 -- 活著的目的是為主活 然後為主死 死亡的目的是為主死 然後為主活 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.116.24.61

08/06 13:21, , 1F
嗯 都是相對於下一個
08/06 13:21, 1F

08/06 13:40, , 2F
那為什麼上面100是指BYTE數 下面7是指令數?
08/06 13:40, 2F
上面是 25 個指令,每個指令是 1 word = 4 bytes ,所以總共 100 bytes 。 下面是 7 個指令,每個指令是 1 word = 4 bytes ,所以總共是 28 bytes 。 ※ 編輯: sitos 來自: 122.116.24.61 (08/06 14:46)

08/06 15:32, , 3F
他應該是指beq的address單位不一致的問題
08/06 15:32, 3F
XD 的確不一致,應該怎麼寫看課本吧。

08/06 18:37, , 4F
一百應該是因為平常那個位置會放一個TARGET LABEL
08/06 18:37, 4F

08/06 18:38, , 5F
而TARGET LABEL都是已BYTE在算的阿
08/06 18:38, 5F

08/07 00:05, , 6F
所以都用byte算 那*7那邊也是byte嘛?
08/07 00:05, 6F
※ 編輯: sitos 來自: 122.116.24.61 (08/07 00:11)

08/07 12:25, , 7F
謝謝各位 看來只能看題目隨機應變了~_~
08/07 12:25, 7F
文章代碼(AID): #1EFCwx3H (Grad-ProbAsk)
文章代碼(AID): #1EFCwx3H (Grad-ProbAsk)