作者christianSK (AG)
看板Grad-ProbAsk
標題[理工] [計組] 記憶體位址計算
時間Sat Aug 28 22:24:43 2010
題目:
(這是去年張凡老師上課的講義中的題目)
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