私のプログラムは、0 から 2^32 または 4,294,967,295 の間の入力を受け入れる必要があります。
どのビット単位の 32 バイトができるはずですが、これを符号なし整数にする方法がわからないため、負の数にオーバーフローしています。算術演算で実行できる命令があることがわかりましたが、それをレジスタにロードして印刷したい場合はどうすればよいでしょうか? 現在、常に負の数が出力されます。
私のプログラムは、0 から 2^32 または 4,294,967,295 の間の入力を受け入れる必要があります。
どのビット単位の 32 バイトができるはずですが、これを符号なし整数にする方法がわからないため、負の数にオーバーフローしています。算術演算で実行できる命令があることがわかりましたが、それをレジスタにロードして印刷したい場合はどうすればよいでしょうか? 現在、常に負の数が出力されます。
http://courses.missouristate.edu/KenVollmar/mars/Help/SyscallHelp.html
サービス コール 36 を試してください。unsigned int が出力されます。
int が符号付きであるか符号なしであるかは、レジスタ内での存在方法には関係ありません。いずれにせよ、それは単なる一連のビットです。2^32 -1 = 0xFFFFFF。これを符号なし整数と解釈すると、4,294,967,295 または 2^32-1 になります。2 の補数を使用して符号付き整数として読み取ると、0xFFFFFFFF は -1 です。問題は印刷コマンドにあると思います。印刷出力を無署名としてフォーマットしてみてください。