MIPS で符号なし整数を操作しようとすると、実行するすべての操作が符号なしの操作であるにもかかわらず、実行するすべての操作の結果は符号付きのままになります (つまり、整数はすべて 2 の補数になりますaddu
) multu
。
範囲内の数値を出力すると、[2^31, 2^32 - 1]
署名されているかのように「オーバーフローした」負の値が得られます(署名されていると思います)。
ただし、次のようなことを試すと:
li $v0, 1
li $a0, 2147483648 # or any bigger number
syscall
印刷された番号は常に2147483647 (2^31 - 1)
私は混乱しています...何が欠けていますか?
PS:コードはあまり読みにくいため(アセンブリコードなど)、含めていません。この問題はさておき、問題なく動作しているようです。誰かが必要だと感じたら、すぐに含めます!