Сборка MIPS 3000, загрузка и печать 32-битного целого числа без знака

Моя программа должна принимать ввод от 0 до 2^32 или 4 294 967 295.

Какие побитовые 32 байта должны быть в состоянии сделать, но я переполняю отрицательные значения, потому что я не уверен, как сделать это целым числом без знака. Я вижу, что у меня есть инструкции, которые могут сделать это с помощью арифметики, но что, если я просто хочу загрузить это в регистр и распечатать? Он всегда печатает отрицательное число прямо сейчас.


person SomeRandomDeveloper    schedule 03.05.2013    source источник


Ответы (2)


Является ли int подписанным или беззнаковым, не должно иметь значения для того, как оно существует в регистре. В любом случае это просто последовательность битов. 2^32 -1 = 0xFFFFFF. Если вы интерпретируете это как целое число без знака, это будет 4 294 967 295 или 2 ^ 32-1. Если вы читаете его как целое число со знаком, используя дополнение до двух, 0xFFFFFFFF равно -1. Я предполагаю, что проблема в вашей команде печати. Попробуйте отформатировать вывод на печать как неподписанный.

person A.E. Drew    schedule 03.05.2013
comment
Я понимаю первую часть того, что вы говорите, но, похоже, не существует системного вызова для печати целого числа без знака для MIPS 3000, поэтому не уверен. - person SomeRandomDeveloper; 04.05.2013
comment
Я предлагаю вам показать код, который вы используете для печати реестра. Я не думаю, что речь идет о MIPS, а о вашем системном вызове ОС, а затем о том, что вы делаете с результатами. - person A.E. Drew; 04.05.2013
comment
@A.E.Drew: Вы можете преобразовать его в строку самостоятельно (здесь, в SO, должны быть десятки вопросов, как это сделать), а затем использовать системный вызов print_string (4). - person Michael; 04.05.2013

http://courses.missouristate.edu/KenVollmar/mars/Help/SyscallHelp.html

Попробуйте сервисный вызов 36. Это печатает беззнаковое целое число.

person Eric Dong    schedule 29.09.2016