Re: [理工][計組] branch指令轉machine code
※ 引述《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
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
08/06 15:32, 3F
XD 的確不一致,應該怎麼寫看課本吧。
推
08/06 18:37, , 4F
08/06 18:37, 4F
→
08/06 18:38, , 5F
08/06 18:38, 5F
推
08/07 00:05, , 6F
08/07 00:05, 6F
※ 編輯: sitos 來自: 122.116.24.61 (08/07 00:11)
推
08/07 12:25, , 7F
08/07 12:25, 7F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):