Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
c代码
while (save[i]==k) i+=1;
将 i 放入 $s3,将 k 放入 $s5,将 k 的地址放入 $s6
mips代码
loop: sll $t1, $s3, 2 add $t1, $t1, $s6 lw $t0, 0($t1) bne $t0, $s5, Exit addi $s3, $s3, 1 j loop Exit:
您的save数组/指针必须是某种 4 字节类型(ints?)。save[i]因此,要从内存中加载,索引i需要转换为数组内的字节偏移量,然后添加到该数组的基地址。这是通过乘以i四来完成的:
save
int
save[i]
i
sll $t1, $s3, 2
然后添加save:
add $t1, $t1, $s6
不过,这看起来不像是优化的构建。通常编译器可以重写此代码以直接以四为增量推进一个临时指针,从而避免该循环中的两条指令。