2

タイトルはこれをほぼ要約しています。学校のプロジェクトで 32 ビット MIPS アセンブリ言語 (MARS エミュレーターを使用) でプログラムを作成していますが、2,147,483,647 を超える int 値を読み取ることができません。

私はかなりの時間をインターネットや本で探し回っていましたが、役に立ちませんでした。これは課題の中心ではありませんが (それが不可能だとわかっている場合は、おそらくすでに気付いているでしょう)、好奇心がこの猫を殺しています。このレンガの壁にぶつかった今、私は確かに知っている必要があります.

ノート:

  1. float や double を取得するのではなく、unsigned int を取得する方法を特に探しています。
  2. syscall で int を取得するための標準コード:

    li $v0, 5
    syscall
    move $t0, $v0
    
  3. 整数のプロンプトで 2 500 000 000 が渡されたときに発生するエラー:

    Error in C:\DEV\....... line 57: Runtime exception at 
    0x004000034: invalid integer input (syscall 5)
    

助けてオビワン、あなただけが頼りです!

4

1 に答える 1

0

別のシステム コールを使用する必要があります。MIPS CPU の「内部」ではなく、MARS が例外をスローしています。たとえば、syscall 8 または 12 (文字列の読み取りと文字の読み取り) を試してください。結果として、これらを機能させるには、より多くの解析を自分で実装する必要があることに注意してください。

または、double を読み取って (syscall 7)、整数に変換してみてください...

オンラインの MARS システムコールの完全なリストは次のとおりです。

http://courses.missouristate.edu/KenVollmar/MARS/Help/SyscallHelp.html

于 2011-10-07T04:47:26.380 に答える