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と、呼び出し先保存レジスタの 1 つに変数を格納できます( $s0,$1,...,$s7)。

関数の実行が開始されると、qsort関数が最初に行うべきことは、関数が使用する呼び出し先保存レジスタのいずれかをスタックに保存することです。

于 2013-09-23T18:25:22.597 に答える