Когда я пытаюсь работать с целыми числами без знака в MIPS, результат каждой операции, которую я делаю, остается под подпиской (т. Е. Целые числа находятся в дополнении 2), хотя каждая выполняемая операция является неподписанной: addu
, multu
и т. Д. четвертый ...Почему операции MIPS на неподписанных номерах дают подписанные результаты?
Когда я печатаю цифры в диапазоне [2^31, 2^32 - 1]
Я получаю их «переполненное» отрицательное значение, как будто они были подписаны (я думаю, они есть).
Хотя, когда я пытаюсь что-то вроде этого:
li $v0, 1
li $a0, 2147483648 # or any bigger number
syscall
напечатанный номер всегда 2147483647 (2^31 - 1)
Я запутался ... Что мне не хватает?
PS: Я не включил свой код, поскольку он не очень читаем (такой код сборки) и отложил эту проблему, , похоже, работает нормально. Если кто-то почувствует, что это необходимо, я включу его прямо сейчас!
Я искал всю сеть для ответа ... везде, но очевидно. благодаря! – dankilman
Тогда почему они используют терминологию «подписанный и неподписанный» вместо чего-то вроде «checked and unchecked»? – dan04
Это неправильное название. Прочитайте первую цитату. –