Проверка ввода сборки - PullRequest
       29

Проверка ввода сборки

1 голос
/ 05 ноября 2010

В моей программе сборки я запрашиваю несколько целочисленных входных данных от пользователя. Однако даже если я введу символ, строку или вообще ничего, программа продолжит выполнение.

Как я могу проверить, действительно ли пользователь ввел целое число, а не что-то еще.

Ответ может быть независимым от синтаксиса сборки

Ответы [ 2 ]

3 голосов
/ 05 ноября 2010

В данном конкретном случае используется MIPS. Системный вызов, выполняющий службу «InputDialogIn», возвращает в регистр $a1 значение состояния в зависимости от ввода.

  • 0: Состояние ОК
  • -1: Вход не может быть проанализирован
  • -2: Отмена выбрана
  • -3: Кнопка «ОК» выбрана, но данные не вводятся в поле

Поэтому, используя значение в операциях beq до $ ноль, проверка ввода будет успешной.

Примечание : инструкция / системный вызов 51 «InputDialogIn», эксклюзивно для симулятора MARS.

1 голос
/ 05 ноября 2010

Существует простой способ узнать, как это можно сделать - написать эту функцию проверки в C, скомпилировать в ассемблер и попытаться сопоставить конструкции C с тем, что вы видите (опция GCC -S, различные переключатели -fdump-XXX позволяют комментироватьассемблерный код).

...