循环和数组的C到MIPS转换

时间:2015-10-28 15:43:07

标签: c arrays for-loop mips

我试图将以下C代码转换为MIPS,但我很难理解你如何在数组中获取[k-1]。

int vek[100];
main()
{
int k;
int first = vek[0];

for (k = 1; k < 100; k++)
{ 
   vek[k - 1] = vek[k];
}
vek[k – 1] = first;
}

这是我到目前为止所得到的:

.data
vek: .space 400

.text
 main:
 addi s0,zero,1                #k = 1
 addi s1,zero.100              #value 100
 la t1,vek                     #t1 as index in vek
 add s2,t1,zero                #first = vek[0]

 L1:
 bgt s0,s1,end                 #if k is bigger then 100 jump to end label
 addi s0,zero,-1               #k-1
 sll t2,s0,2                   #t2 = 4*k next space in the array

这里是我失去自己的地方,我不明白我应该如何翻译其余的代码。由于网络上缺少MIPS教程,因此您是我的最后一次机会。如果某种灵魂可以帮助翻译代码的最后部分并给我一个很好的解释。

P.S这不是我将使用它只是一个问题的例子,将在考试中。

1 个答案:

答案 0 :(得分:0)

这是一个应该有效的简单实现,逐行解释发生了什么:

docker run -d -p 9999:80 httpd

你可以更简洁一些,但我试图让这个更容易理解,而且自从我看过MIPS以来它已经是很长了。