这是C代码:
int A[10];
int sum = 0;
int i = 0;
while (i<10){
sum += A[i++];
sum *= 2;
}
这是我对转换为 MIPS 的看法:
**Reg. Allocation Table:
A = $s1
sum = $s2
i = $s3
10 = $s4**
loop: beq $s3, $s4, endloop
"here's where i get stuck, inside the while loop."
j: loop
endloop:
i = $s1
我了解在基本的 while 循环中,例如:5 = $s3
i=0;
while(i != 5)
i=i+1;
addi $s1, $zero, 0 #i=0
loop: beq $s1, $s3, endloop
add $s1, $s1, 1
j loop:
endloop:
我只是遇到了麻烦,或者很难理解一个稍微困难的循环在哪里引入sum+= A[i++];
和。sum*= 2;
任何帮助是极大的赞赏。我不是在寻找一个完整的解决方案,所以请帮我想想。
谢谢!