MIPS: Могу ли я получить значение unsigned int от пользователя через системный вызов?

Название в значительной степени резюмирует это. Я пишу программу на 32-битном языке сборки MIPS (с использованием эмулятора MARS) для школьного проекта, и мне не повезло с чтением значений int> 2 147 483 647.

Я потратил приличное количество времени на поиски в Интернете, но безрезультатно. Это не главное в задании (которое, если вы знаете, что это невозможно, вы, вероятно, уже поняли), но любопытство убивает этого кота. Теперь, когда я наткнулся на эту кирпичную стену, я должен знать наверняка.

Примечания:

  1. Я специально ищу способ получить беззнаковое int, а не использовать float или double.
  2. Стандартный код для получения int с помощью syscall:

    li $v0, 5
    syscall
    move $t0, $v0
    
  3. Ошибка, возникающая, когда 2 500 000 000 передается в приглашении для целого числа:

    Error in C:\DEV\....... line 57: Runtime exception at 
    0x004000034: invalid integer input (syscall 5)
    

Помоги мне, Оби-Ван, ты моя единственная надежда!


person chucksmash    schedule 07.10.2011    source источник


Ответы (1)


Вам нужно будет использовать другой системный вызов - MARS выдает исключение, а не что-то «внутри» процессора MIPS. Попробуйте, например, системные вызовы 8 или 12 (чтение строки и чтение символа). Обратите внимание, что в результате вам придется реализовать гораздо больше синтаксического анализа, чтобы все заработало.

В качестве альтернативы вы можете попробовать прочитать двойное (системный вызов 7) и преобразовать его в целое число ...

Полный список системных вызовов MARS доступен онлайн по адресу:

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

person Community    schedule 07.10.2011
comment
Это хороший момент об источнике исключения. Что касается предложения либо прочитать в виде строки и проанализировать значение, либо использовать другой числовой формат - я рассмотрел это и, если бы это было центральным в назначении, я бы; в нынешнем виде мне просто любопытно, есть ли поддерживаемый способ чтения беззнаковых целых чисел через системный вызов. - person chucksmash; 07.10.2011
comment
В своем ответе я отредактировал ссылку на полный список системных вызовов MARS. К сожалению, я не вижу там ничего подходящего. - person ; 07.10.2011