2012-03-21 22 views
0

MIPSで再帰フィボナッチ割り当てを行い、私のmacでqtSpimでシミュレートして動作させています。しかし、私の先生は、整数nがfib関数で大きすぎるかどうかをチェックする方法を望んでいます。もしそうなら、 "出力数が大きすぎます"。どのように私はこれを行うことについて行くことができるかについてのヒント?数値が64ビット整数であるかどうかをチェックする方法

+0

私の推測では、教師がオーバーフロートラップ用のハンドラを書いてほしいと思います。 – dasblinkenlight

答えて

2

私はMIPS命令セットについてよく分かりませんが、一般的なアセンブラのアプローチは、操作後にキャリーフラグをチェックすることです。それが設定されていると、結果は(符号なしの)算術演算では大きすぎます。

AFAIK、MIPSにはキャリーフラグがありません。次のようにしかし、あなたは1を近似することができる。また、

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)場合は、新しい番号が大きすぎたことを知って、オーバーフローが発生しました。

関連する問題