2009-08-15 12 views
14

私はSPIMシミュレータを使用してMIPSを学習していますが、この問題を抱えています。アセンブリ内に2つの64ビット数値を追加する

4つの32ビットレジスタに格納されている2つの64ビット番号を追加したいとします。だから私は、LOバイトを追加し、キャリーとHIバイトを追加します。しかし、adc/addcコマンドはありません。つまり、add with carryです。

したがって、ステータスレジスタにキャリービットを追加する必要があります。しかし、私はこの登録簿をどのくらい正確に読んでいますか?

$ t0が一時レジスタ1の場合、キャリーフラグを保持するステータスレジスタに相当するものは何ですか?

私はまだ多くのグーグルを行っていますが、ステータスレジスタを使用する例はまだありません。

+0

MIPSにステータスまたはフラグレジスタがありません –

答えて

21

追加$ T2は$ t3の+ $のT4の$ T5は、あなたの質問の後半部分については$ t0のの$ t1の

addu $t1, $t3, $t5 # add least significant word 
sltu $t0, $t1, $t5 # set carry-in bit 
addu $t0, $t0, $t2 # add in first most significant word 
addu $t0, $t0, $t4 # add in second most significant word 

になり、何のステータス・レジスタはありません。まったくありません。ナダ。

+0

ありがとうございました。なぜ私がステータスレジスタを見つけることができなかったのかが分かります:) あなたの答えは完全に動作します。より良いMIPSコーディングに関するヒントをお持ちの場所はありますか? –

+0

少々あります。私のために、他の人のソースを見ている、またはobjdump -Sを見ていることに対する瞑想はうまくいきます。コンパイラが何か正しいことをするまれな場面から学ぶことができますが、いつものようにまったく違う場所でもっと学ぶことができます;-) http://www.cs.unibo.it/~ solmi/teaching/arch_2002-2003/AssemblyLanguageProgDoc.pdfにも便利なヒントがあります。 – hirschhornsalz

+0

すばらしい解決策。明らかに二重(IMHO)の問題に対する解決策がこのエレガントなときに私はそれを愛しています。 – Derek

関連する問題