[問題] 有個 C 程式碼 轉 MIPS
小弟尚未開始學組語,但是計算機組織有扯到,所以有些問題想請教大家。
是一個有關 簡單 C語言敘述 轉成 MIPS 指令~~
Q: 假設 $s0 存放變數 f的值, $s1 存放變數 g的值 ~ 而 $s6 存放 整數陣列 A[0] 的
記憶體位置( 即 &A[0] ) , $s7 存放 整數陣列 B[0] 的記憶體位置 (即 &B[0])
=> 將 右邊的 C 語言敘述 : f = g - A[ B[4] ]; 轉成 MIPS ~
我的想法 => lw $t0,16($s7) # 把陣列 B[4]的數值 暫存於 $t0
muli $t0,$t0,4 # 把 $t0 * 4
lw $s0,$t0($s6) # 把 A[ B[4] ]的數值 存放在 $s0
sub $s0,$1,$s0 # f = g - A[ B[4] ]
答案: =>
lw $t0,16($s7)
lw $s0,0($t0) # 看不懂
lw $s0,$s1,$s0
------------------------------------------------------------------------------
請問各位,我這樣的寫法可以嗎? 答案的寫法 怎麼可以這麼精簡
而且 在C的敘述中 有用到陣列 A[B[4]] 可是答案怎麼都沒用到 $s6
會用到巴 = =+ 我看了半天 猶豫是不是該把這傻問題 PO到這個版 = =+
可是真的看不懂了 有不妥的地方 請鞭小力一點 ....3Q
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.40.115.60
→
12/11 15:10, , 1F
12/11 15:10, 1F
→
12/11 15:12, , 2F
12/11 15:12, 2F
ASM 近期熱門文章
PTT數位生活區 即時熱門文章