[英]Integer array indexing with MIPS assembly
我想将此C代码转换为MIPS。
C代码:
f = A[B[h-g]]
我们假设h > g
且B[hg] > 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)
除了最后一行,它看起来不错,它最有可能是:
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之类的模拟器。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.