[理工] [計組] 記憶體位址計算

看板Grad-ProbAsk作者 (AG)時間15年前 (2010/08/28 22:24), 編輯推噓2(206)
留言8則, 3人參與, 最新討論串1/1
題目: (這是去年張凡老師上課的講義中的題目) 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

08/28 22:38, , 1F
當然要加上他的base 所以(2)根(3)之間要在加上base
08/28 22:38, 1F

08/28 22:39, , 2F
add $t0 $t0 $s6;
08/28 22:39, 2F

08/28 22:40, , 3F
你的(2)是要算他的位移量offset
08/28 22:40, 3F

08/28 22:41, , 4F
是說講義上的解法要加上上面那行嗎?
08/28 22:41, 4F

08/28 22:41, , 5F
因為lw 位移量那欄只能放常數 不能放暫存器號碼
08/28 22:41, 5F

08/28 22:42, , 6F
喔喔 那我知道了!! 謝謝~~
08/28 22:42, 6F

08/28 22:42, , 7F
正想問是不是只能放常數的說XD"
08/28 22:42, 7F

08/29 00:48, , 8F
...
08/29 00:48, 8F
文章代碼(AID): #1CUHmjYD (Grad-ProbAsk)