当我尝试在 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:我没有包含我的代码,因为它不是很易读(例如汇编代码)并且抛开这个问题,似乎工作正常。如果有人觉得有必要,我会立即将其包括在内!