2011-02-11 3 views
1

私は配列を作成し、必要に応じて特定のセルの値を更新しようとしています。私が知っていることから、スタックフレームを使用するのが最良の方法ですが、それを動作させることはできません。誰かが正しい方向に私を指すことができる?MIPSで配列を更新するには?

ありがとうございます!

+0

これまでのコードはどのようになっていますか? –

答えて

1

あなたは既に配列操作はC.のような言語でどのように動作するかをよく理解している必要があります

あなたは、現在のスタックフレームの配列を入れ、そこにそれを操作(と利点と問題点を理解したい場合

  1. まず、スタックポインタレジスタ($sp)の現在の値を書き留めます。これを配列の先頭へのポインタとして使用します。それを別のレジスターに保管してください。
  2. 最初に、スタックポインタレジスタ($sp)を、配列が多くのバイトだけインクリメントします。これはあなたに十分なスペースを与えるでしょう。
  3. アレイを更新する場合は、アレイの先頭アドレスとアレイインデックスを計算します。たとえば、要素5を書き込んだり読み込んだりするには、配列の先頭に5を加え、単語のサイズを乗算します。 32ビットマシンでは、4を掛けます。
  4. sw命令を使用して、そのアドレスのアレイにワードを格納し、lwを使用してワードをロードします。
+0

アレイの個々のセルを更新できますか?私が配列Aを持っている場合と同様に、A [6]をA [6] +1または他のセルに変更するためにメソッドを使用できますか? – Parker

+0

ご返信遅れて申し訳ありません。はい。私のステップ3と4は、配列の任意の要素を任意に読み書きできるようにします。 A [6]:= A [6] + 1を実行するには、最初にA [6]へのポインタを計算するためにステップ3を使用します。次に、そのアドレスの値をレジスタにロードするために 'lw'を使います。それから 'inc'を使って1を加えてください。そして、 'sw'を使って値をアドレスに書き戻します。 – mgiuca

+0

@Parkerこの回答は役に立ちましたか? – mgiuca

関連する問題