我应该将C代码翻译成汇编,真正让我感到困惑的是这句话:
for (uint i = 1 ; i <= k ; i++)
b [i]= 0;
我已经得到了for循环的其余条件,但是for循环中的实际语句让我很烦恼。我提出的唯一解决方案是:
sw $zero, $t2($a1) # $a1 is the base address of the array and $t2 is i
但是我确定这是不允许的,因为我需要将分配给i
的值乘以4以有效地到达数组的下一个索引。
答案 0 :(得分:1)
不,你不被允许这样做。 sw
是一个I型指令,因此它需要两个寄存器和一个数字文字。
为此,您需要在循环的每次迭代中向$a1
添加4。请记住,$a1
包含数组中第一个元素的地址,因此通过将指针大小(4个字节)递增,可以将指针向下移动到数组中。