[理工] 計組 MIPS轉C statement

看板Grad-ProbAsk作者 (關鍵人物5566)時間11年前 (2013/04/27 22:19), 編輯推噓3(303)
留言6則, 3人參與, 最新討論串1/1
下面是白算盤的習題2.6其中一題 addi $s6, $s6, -20 add $s6, $s6, $s1 lw $s0, 8($s6) 要將上面的MIPS轉成C base address of array A is in the register $s6 variable f, g are assigned to registers $s0, $s1 我看解答是 f = A[g-3] 可是我不懂的是 在MIPS上面中g沒有 *4 怎麼會得到這樣的答案? 還是解答錯了? 不過我也想不到其他答案了... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.240.153.235

04/28 13:54, , 1F
正確吧 C程式中的的3代表3個word(32bits)
04/28 13:54, 1F

04/28 13:55, , 2F
MIPS程式中的8與20 代表8個byte與20個byte
04/28 13:55, 2F

04/28 13:57, , 3F
所以-20+8=-12 在C程式中是word要除以4是 所以"-3"
04/28 13:57, 3F

04/28 19:28, , 4F
g不用/4嗎?
04/28 19:28, 4F

04/28 22:39, , 5F
我覺得是 f = A[(g-12)/4]
04/28 22:39, 5F

04/29 11:47, , 6F
對不起 我沒發現g @@ 原諒我
04/29 11:47, 6F
文章代碼(AID): #1HUzvPbS (Grad-ProbAsk)