Когда я пытаюсь работать с целыми числами без знака в 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: Я не включил свой код, поскольку он не очень читабельен (такой код сборки) и отложил эту проблему, кажется, работает нормально. Если кто-то почувствует, что это необходимо, я включу его прямо сейчас!