使用MIPS程序集进行整数数组索引

时间:2012-02-06 09:36:44

标签: c mips mips32

我想将此C代码转换为MIPS。

C代码:

f = A[B[h-g]]

我们假设h > gB[h-g] > 0hgf是整数。

还假设f已分配到$s0g$s1h$s2

A的基地址 - > $s6B - > $s7

这是我的尝试:

sub $t0, $s2, $s1                   
mult $t0, $t0, 4                     
lw $t0, $t0($s7)           
mult $t0, $t0, 4           
sw $s0, $t0($s6)

1 个答案:

答案 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这样的模拟器。