0

所以,我有一堂课,我们已经用 c 代码实现了快速排序算法,我们必须用 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”。所以当递归调用完成时,我必须回忆以前的“正确”值。简单地说,我怎么能这样做?

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

4

1 回答 1

0

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

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

于 2013-09-23T18:25:22.597 回答