Im, выполняющий рекурсивное назначение фибоначчи в MIPS и смоделированное с qtSpim на моем mac и работаю. Тем не менее, мой учитель хочет проверить, является ли целое число n слишком большим в функции fib, и если это так, «вывести число слишком велико». Любые намеки на то, как я могу это сделать?Как проверить, является ли число 64-битным целым
0
A
ответ
2
Я мало знаю о наборе команд MIPS, но общий подход ассемблера заключается в проверке флага переноса после операции. Если он установлен, то результат был слишком большим для (без знака) арифметики.
AFAIK, MIPS не имеет флага для переноски. Но вы можете приближенную следующим образом:
addu $t3, $t2, $t1 # t3 = t2 + t1
sltu $t4, $t3, $t1 # t4 = 1 if carry occurred
1
F(n) = F(n - 1) + F(n - 2)
также:
F(n) > F(n - 1)
Если F(n) < F(n - 1)
, то вы знаете, что новый номер был слишком велик, переполнение произошло.
Мое предположение заключается в том, что ваш учитель хотел бы, чтобы вы записали обработчик для переполнения ловушки. – dasblinkenlight