quicksort Mips装配

时间:2013-09-22 17:47:55

标签: assembly recursion mips quicksort

所以,我有一个类,我们已经在c代码中实现了quicksort算法的实现,我们必须用mips汇编语言来实现该代码。我已成功完成了大部分代码,但是我遇到了一些递归问题。这是我关注的c程序的一部分:

...
tmp = v[left];
v[left] = v[last];
v[last] = tmp;
qsort(v, left, last-1);
qsort(v, last+1, right);

我遇到麻烦的部分是递归部分,即。 qsort(v,left,last-1)......

我的问题是,当运行qsort(v,left,last-1)时,值last-1保存为“right”。因此,当完成递归调用时,我必须回忆起“正确”的先前值。我怎么能这样做呢?

编辑: 问题是,数字列表越大,将会有越多的递归调用,因此,我必须存储的值越多。我想,我想知道的是,是否有办法存储和调用可变长度的值?

1 个答案:

答案 0 :(得分:0)

如果根据标准MIPS调用约定编写qsort函数,则可以将right变量存储在其中一个被调用者保存的寄存器($s0,$1,...,$s7)中。

qsort函数开始执行时,它应该做的第一件事是将它使用的被调用方保存的寄存器保存到堆栈中。