2012-05-06 13 views
2

へのaddi命令私はMIPSの新人だと我々のコードのこのスニップが何を意味するのかを把握に苦労しています... $ S6は、配列Aの開始です:MIPS、アレイベース

addi $t0,$s6,4 

$ t0 = A [4] - $ t0 = A [0] + 4を意味する場合は、A [0]の値をとり、それを保存するために4を追加しますA [0]

本当にありがとうございます。

ありがとうございます!

答えて

1

ライン:$ S6が配列の塩基である

addi $t0,$s6,4 

はレジスタ$ s6の内容をとり、4を加えて結果を$ t0に入れます。したがって、$ s6のアドレスが0x00400000の場合、addi命令の後、$ t0には0x00400004が含まれます。

addi命令は、即値、すなわち整数値をソースレジスタに追加し、結果をデスティネーションレジスタに格納します。この場合は$ t0です。

$ s6がA [0]なら、$ t0は整数配列を持つと仮定してA [1]になります。文字配列(文字列)がある場合、$ t0はA [3]になります。 $ t0はこれらの配列インデックスの値を保持しません。$ t0は元々保持していた配列インデックスのアドレスを保持します。

1

この命令は、$ s6に格納されている値を取り出し、その値に4を加えてその新しい値を$ t0に格納することを意味します。 $ s6の値は変わりません。 $ s6は保存された一時レジスタなので、$ s_の値を変更する必要があるときは、まずそれをスタックに保存する必要があります。 $ s6の値を変更していないので、スタックに保存する必要はありません。あなたは書かれた内容を心配する必要がない一時レジスタに保存しています。また、$ s6は実際にRegester 22または$ R22です。$ t0は$ r8です....

基本的に1つの32ビットワードを次の命令/データワードに増加しています。

これはあなたのコメントに反応している:あなたによって

が言っ[0] =あなたが言っている大会で7その7 $に等しいレジスタ$ S6の内容が参照する「メモリアドレス」、 s6は7とは異なりますが、メインメモリではそれが指している点は何ですか。 s6には、私たちが解釈しているか、または知っている番号がアドレスであるだけです。配列の次の要素に到達するのに十分なバイトを追加したいので、$ s6に4を追加します。 1ワードは32ビットが4バイトです。習慣的には、4を加えたいと思っています。次の単語に到達するためにはバイト単位で表示されます。単語は一般に32ビットまたは4バイトの長さです。 s6に4バイトを加えた後は、元のs6が何であるかを知らされなかったので結果はわかりませんが、t0は本質的にs6 [1]を指すことがわかります。私は配列に別のインデックスを追加しているとは言いません。配列はすでに設定されているか、可能な限り最後まで読み込むつもりですが、エラーが出ることはありません。それはあなたがそれを与えるアドレスによって参照される主記憶の現場にあるものだけを教えてくれるでしょう。空白、有効なもの、間違い、またはプログラムデータの別の部分である可能性があります。もっと知るためにはプログラムの文脈をもっと知る必要があります。

+0

ありがとうございます。あなたは最後の文まで私を持っていました。だから私は明らかだ、のは言わせ[0] = 7は のaddi $ t0の、$ S6、4 [0] 7 で変わらないだろう私はないの$ T0 = 11 値を意味アレイの権利に別の標識を追加しますか? – melMPLS

0

ほとんどのMIPS命令は、次のとおりです。

instruction $destination, $operands 

この具体的な命令は、配列の先頭のメモリアドレスを持つA []は$ S6で、の4バイト目の位置を[保存] $ t0で私はあなたが書いたものから理解したよう

は、$ S6で、あなたは[0]、いない値のメモリアドレスを持っている[0]、と言うことです

$ S6 = @A [0の場合]はアドレス値0x00である場合、$ t0 = $ s6 + 4の値は0x04です。

配列A [](short、int、long)のタイプに応じて、 $ t0の配列。4バイト長の整数の配列の正常な場合

は、$ T0が今指すであろう[1]

+0

sw(ストアワード)とlw(ロードワード)は、あなたが言った規約に従わない。 SW R1 R2はr1の値を取り、r2でリフレッシュされたメインメモリ(RAM)アドレスに格納します。 lw r1 r2は、メインメモリの内容をr2でリフレッシュしてr1に格納します。 –

+0

@aaronburnsあなたは正しいですが、混乱させないように編集しました。ありがとうございました – Fonserbc

+0

私はもっと理解していると信じています...私は特定の標識で配列の内容に追加していると誤っています。配列の基本インデックスに4を追加する場合、配列内の次の単語または標識に向かって進んでいます。あなたの忍耐と時間を私はこれを通って歩いてくれてありがとう!とても有難い。 – melMPLS