看板 Grad-ProbAsk 關於我們 聯絡資訊
題目: (這是去年張凡老師上課的講義中的題目) f, g, h, i, j 分別位於 $s0, $s1, $s2, $s3, $s4 arrayA, arrayB 則是位於 $s6, $s7 那麼 f = g - A[ B[4] ]; 若以MIPS assembly來表示應該寫作? 我自己的寫法: lw $t0 16($s7); (1) sll $t0 $to 2; (2) lw $s0 $t0($s6); (3) sub $s0 $s1 $s0; (4) 講義上的解答: lw $t0 16($s7); (1) sll $t0 $to 2; (2) lw $s0 0($t0); (3) sub $s0 $s1 $s0; (4) 我跟解答的不同在第三行 我想問的是為什麼計算A[B[4]]的記憶體位址時 不需要再加上他的base $s6 呢? 謝謝大家了! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.243.149.20
compulsory:當然要加上他的base 所以(2)根(3)之間要在加上base 08/28 22:38
compulsory:add $t0 $t0 $s6; 08/28 22:39
compulsory:你的(2)是要算他的位移量offset 08/28 22:40
christianSK:是說講義上的解法要加上上面那行嗎? 08/28 22:41
compulsory:因為lw 位移量那欄只能放常數 不能放暫存器號碼 08/28 22:41
christianSK:喔喔 那我知道了!! 謝謝~~ 08/28 22:42
christianSK:正想問是不是只能放常數的說XD" 08/28 22:42
daniel770624:... 08/29 00:48