我想将此C代码转换为MIPS。
C代码:
f = A[B[h-g]]
我们假设h > g
和B[h-g] > 0
。 h
,g
,f
是整数。
还假设f
已分配到$s0
,g
到$s1
,h
到$s2
。
A
的基地址 - > $s6
和B
- > $s7
这是我的尝试:
sub $t0, $s2, $s1
mult $t0, $t0, 4
lw $t0, $t0($s7)
mult $t0, $t0, 4
sw $s0, $t0($s6)
答案 0 :(得分:1)
除最后一行外,它看起来不错,最有可能是:
lw $s0, $t0($s6)
请注意,您应该始终评论您的代码,特别是当它是asm时,例如
sub $t0, $s2, $s1 ; t0 = h - g
mult $t0, $t0, 4 ; t0 = (h - g) * sizeof(int) = byte index into B
lw $t0, $t0($s7) ; t0 = B[h - g]
mult $t0, $t0, 4 ; t0 = B[h - g] * sizeof(int) = byte index into A
lw $s0, $t0($s6) ; s0 = A[B[h - g]]
另请注意,您应始终测试您的代码 - 我建议您使用SPIM这样的模拟器。