板上的神人大大们好
小弟第一次在此版发言如有冒犯请多见谅
最近在准备研究所考试中在题目中看到一题不太会解
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
不知道这样的答案是否算是正确呢?