2012-03-21 2 views
0

Im, выполняющий рекурсивное назначение фибоначчи в MIPS и смоделированное с qtSpim на моем mac и работаю. Тем не менее, мой учитель хочет проверить, является ли целое число n слишком большим в функции fib, и если это так, «вывести число слишком велико». Любые намеки на то, как я могу это сделать?Как проверить, является ли число 64-битным целым

+0

Мое предположение заключается в том, что ваш учитель хотел бы, чтобы вы записали обработчик для переполнения ловушки. – dasblinkenlight

ответ

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), то вы знаете, что новый номер был слишком велик, переполнение произошло.