[問題] MIPS 矩陣計算

作者: h04mp6286 (H28)   2014-11-23 16:01:35
板上的神人大大們好
小弟第一次在此版發言如有冒犯請多見諒
最近在準備研究所考試中在題目中看到一題不太會解
Q:假設 $s0 存放變數 c的值, $s1 存放變數 d的值 , 而 $s6 存放 整數陣列 A 的
記憶體位置( 即 &A[0] ) , $s7 存放 整數陣列 B 的記憶體位置 (即 &B[0])
將以下C程式碼轉換成MIPS:
c = d - A[B[2]];
小弟我的想法是:
lw $t0, 8($s7) # 把陣列 B[2]的值存到 $t0
add $t1, $t0, $t0
add $t2, $t1, $t1 # 將$t0的值*4存到$t2裡
** lw $t3, $t2($s6) # 將A[B[2]]的值存進$t3裡
sub $s0,$s1,$t3 # c = d - $t3
可是lw是I-type不可能在 lw $t3, $t2($s6) 中間放$t2
爬了板上的文章後看到一篇 [問題] 有個 C 程式碼 轉 MIPS
裡有個類似的問題(幾乎一模一樣)
裡面有個不知從何而來的答案(已把參數改成我這題)
lw $t0,8($s7)
@ lw $s0,0($t0) # 看不懂
lw $s0,$s1,$s0
發現我還是看不懂啊,而我看不懂的地方跟原PO一樣
想請問 有關我看不懂的那行代表什麼
在看過訪間參考書與同樣要考試的友人F討論出一個答案
lw $t0, 8($s7) # 把陣列 B[2]的值存到 $t0
add $t1, $t0, $t0
add $t2, $t1, $t1 # 將$t0的值*4存到$t2裡
add $t2, $s6, $t2 # 將A[B[2]]的address存進$t2裡
lw $t3, 0($t2) # 將A[B[2]]的值存進$t3裡
sub $s0,$s1,$t3 # c = d - $t3
不知道這樣的答案是否算是正確呢?

Links booklink

Contact Us: admin [ a t ] ucptt.com