0

私は学校のプロジェクトに取り組んでおり(MIPSとQTSpimを使用しているという事実だけでは理解できない場合)、私のグループは大きな(128ビット)数値用の計算機を作成することを選択しました。128ビットの数値を操作する方法は知っていますが、問題があるのはユーザー入力です。

教授はそれを行う方法を完全には知らないので、MIPSとQTSpimを使用して128ビット整数をロードする方法があるかどうか誰かが知っていますか?

MIPSレジスタは32ビット整数を保持するため、結果を4つのレジスタに格納する必要がありますが、それを実現する方法はありますか?

ありがとう!

4

2 に答える 2

3

私は...するだろう:

  • ユーザー入力を文字列として読み取る
  • 各桁のASCIIコードを0〜9の数値に変換します(つまり、「0」を減算します)
  • 10進数から2進数への基数変換を適用し、結果を4つの32ビットワードで保持します
于 2012-04-09T19:28:39.023 に答える
1

8、16、32、64、128ビットに違いがあるのはなぜですか?gusbroが説明したように、文字列を検証し、新しい数字ごとに10を掛けて、新しい数字を追加します。128ビット数の演算方法を知っていると既に述べたので...演算を実行し、乗算して加算するだけです。操作の方法がわからない場合は、0b1010である0xAを10で乗算しています。小学校の数学を使って、1の列から始めて0回何でもゼロです。パワー1コラム(小学校では10代、ここでは2コラム)のベースは1倍ですが、1つの場所に移動します。4の列はゼロ、8の列は1なので、abcdを左に3列シフトして追加します。

    abcd
   x1010
   =====
    0000
   abcdx
  0000xx
 abcdxxx

したがって、10を掛けるのは、左に1シフトした数に、左に3シフトした数を掛けるのと同じです。32ビットレジスタを使用して、無限のビット数をシフトして追加するのは非常に簡単です。必要に応じて、一度に16ビットまたは24ビットを実行し、ビット17またはビット24をキャリービットとして残します。

128ビットを乗算して加算する方法がない場合は、128ビット計算機ではそれほど遠くないので、おそらく上記は必要ありませんでした。

于 2012-04-15T17:14:18.137 に答える