2

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

C代码:

f = A[B[h-g]]

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

还假设f分配给 register $s0, gto $s1, hto $s2

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

这是我的尝试:

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

1 回答 1

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

于 2012-02-06T10:15:52.610 回答