誰かこのコードは動作しません

J

juanma21

Guest
それは正しいされていない部分fmult後にしてくださいです!私て数日経ってなぜそれが機能¥していないか理解しようとすると????#main.s
その結果を比較することによってfmult関数の#テストの操作
#それにmul.s命令。

。テキスト
。globlテスト

#テストfmult関数です。
#第一パラメータ(a0)、単精度浮動小数点被乗数
#第二パラメータ(A1)の単精度浮動小数点乗算器

テスト:addi $ SPの、$ SPの、-16、スタック上のスペースを作る#
、0($ SP)の戻りアドレスを保持する#ソ¥ラ$女性学生の足
SP)の$はs0、4($女性学生の足s2をを通してレジスタs0を保持する#
、8(SP)を$ s1女性学生の足
)$ s2を、12($ SPの女性学生の足

$はs0、$ a0#$ s0と被乗数リストへ移動
乗数$ s1の中に保存#$ S1の$ A1を移動する
日本航空fmult#呼び出し乗算機能¥
s2の結果を保存#$ s2を、$ v0移動

mtc1 $はs0、$ F12キーを#パラメータ=被乗数
李$ v0、2は、"印刷フロート"syscall番号を読み込む#
システムコール

ラ$ a0などstr1#パラメータ= str1
李$ v0、4"システムコール番号は、"印刷文字列を読み込む#
システムコール

mtc1 $ S1の$ F12キーを#パラメータ=乗数
李$ v0、2は、"印刷フロート"syscall番号を読み込む#
システムコール

ラ$ a0などstr2二つ#パラメータ= str2二つの
李$ v0、4"システムコール番号は、"印刷文字列を読み込む#
システムコール

mtc1 $はs0、$ f2は
mtc1 $ S1の$ F4キー
mul.s $ f0、$ f2は、$ F4キーを乗算#

mov.s $ F12キーを、$ f0#パラメータ=製品
李$ v0、2は、"印刷フロート"syscall番号を読み込む#
システムコール

ラ$ a0などendl#パラメータ= endl
李$ v0、4"システムコール番号は、"印刷文字列を読み込む#
システムコール

ラ$ a0などSTR3を#パラメータ= STR3を
李$ v0、4"システムコール番号は、"印刷文字列を読み込む#
システムコール

mtc1 $ s2を、$ F12キーを#パラメータ=製品
李$ v0、2は、"印刷フロート"syscall番号を読み込む#
システムコール

ラ$ a0などendl#パラメータ= endl
李$ v0、4"システムコール番号は、"印刷文字列を読み込む#
システムコール

、0($ SP)のアドレスを返す復元#ソ¥ラ$ lw
SP)の$はs0、4($ lw s2をを通してレジスタs0を復元#
、8(SP)を$ s1 lw
)$ s2を、12($ SPのlw
addi $ SPの、$ SPの、16スタックポインタを復元する#

ジュニア$ソ¥ラ#を返す

。globlメイン

#かどうか
、 複数のテストケース
#その後
、 追加のテスト例の入力を求められます。

メイン:addi $ SPの、$ SPの、-12、スタック上のスペースを作る#
、0($ SP)の戻りアドレスを保持する#ソ¥ラ$女性学生の足
SP)を#レジスタは
、 この関数で使用される保持$がs0、4($女性学生の足
、8(SP)を$ s1女性学生の足

ラ$ s0を、最初の浮動小数点数のF1#アドレス
最後に
、 浮動小数点数のラ$ S1に押すFn#アドレス

loop1:
)$ a0など0($ s0をlw
)で$ A1、4($ s0をlw
日本航空テスト
addi $ s0を、4
bne $ s0を、$ S1のloop1

loop2:
ラ$ a0など=#パラメータのプロンプトプロンプト
李$ v0、4"システムコール番号は、"印刷文字列を読み込む#
システムコール

李$ v0、6"フロート"syscall番号を読み取る負荷#
システムコール
mfc1 $はs0、$ f0#はs0 =浮動小数点被乗数

ラ$ a0など=#パラメータのプロンプトプロンプト
李$ v0、4"システムコール番号は、"印刷文字列を読み込む#
システムコール

李$ v0、6"フロート"syscall番号を読み取る負荷#
システムコール
mfc1 $ S1の$ f0#s1 =浮動小数点乗算器

$ a0など$ s0を移動する
で$ A1、$ s1移動
日本航空テスト

論文loop2#無限ループ

李$ v0、0#戻り値

、0($ SP)のアドレスを返す復元#ソ¥ラ$ lw
SP)のレジスタは
、 この関数で使用される復元#$がs0、4($ lw
、8(SP)を$ s1 lw
addi $ SPの、$ SPの、12スタックポインタを復元する#

ジュニア$ソ¥ラ#を返す

。データ

#テスト例:
標識のすべての4の組み合わせを確認#
ゼロのチェック#をオペランドのどちらか(または両方)
オペランドとして1つのチェック#
01、10と、11進小数点の左側に検索結果の正常化を確認#
指数は1より大きい値を確認#
#(これは
、 中間バイアス指数のオーバーフローになります)
偶数と奇数の指数で結果を確認する#
負の指数を確認する#
1の最下位ビットの結果を確認#

のF1:。フロート1.0#1.0000 × 2 ^ 0
浮かんでいる。-2.0#-1.0000 × 2 ^ 1
浮かんでいる。-5.0#-1.2500 × 2 ^ 2
浮かんでいる。12.0#1.5000 × 2 ^ 3
浮かんでいる。-14.0#-1.7500 × 2 ^ 3
0.0浮かんでいる。
0.0浮かんでいる。
浮かんでいる。62.0#1.9375 × 2 ^ 5
浮かんでいる。112.0#1.7500 × 2 ^ 6
のfn:。単語0xBE000004#結果の最下位ビットが1になります

プロンプト:。ASCIIZ文字"浮動小数点数を入力します:"
str1:。ASCIIZ文字"を掛けた"
str2二つ:。ASCIIZ文字が""
STR3を:"あなたの答えは"ASCIIZ文字
endl:。ASCIIZ文字"¥¥ N"の#float.s

#浮動小数点乗算。テキスト

。globl fmult#前提条件:

#第一パラメータ(a0)、単精度浮動小数点被乗数

#第二パラメータ(A1)の単精度浮動小数点乗算器

#事後条件:

#結果(v0)、単精度浮動小数点製品fmult:李$ v0、0#v0 = 0の場合、デフォルトの結果

beqを$ a0など$ 0、fmult#を返す場合
、 被乗数はゼロです

beqのもとで$ A1、$ 0、fmult#を返す場合
、 乗数はゼロですt5ので左端のビットのために#場所マスク

李$ t5は、は0x80000000#t5は=が0x80000000t0で被乗数の#場所記号

と$ t0、$ a0など$ t5はオフ#マスクの指数部と仮数t1の乗算器の#場所記号

ドルはt1、$ A1を、$ t5はオフ#マスクの指数部と仮数t2内の製品の#場所記号

排他的論理和$ t2に、$ t0、$本館#t2の兆候=排他的論理和t0で被乗数の#場所指数

sll $ t0、$ a0など1#シフト符号ビットを削除する

srlの$ t0、$ t0、24#シフト仮数ビットを削除する

李$ t6、127#subract指数バイアス

サブ$ t0、$ t0、$ t6t1の乗算器の#場所指数

sll $ t1ので$ A1、1#シフト符号ビットを削除する

srlの$はt1、$ t1の24#シフト仮数ビットを削除する

李$ t7、127#subract指数バイアス

サブ$はt1、$はt1、$ t7t3はの製品番号の場所指数

オーバーフローまたはアンダーフローの可能¥性を無視#

$ t3は、追加、$はt1、$ t0#t3は指数=合計

addi $ t3は、$ t3は、127指数のバイアスを追加##場所被乗数のt0の仮数

sll $ t0、$ a0など9#シフト指数を削除する

srlの$ t0、$ t0、9

李$ t5は、出力0x00800000暗黙の1仮数の左に復元する#

または$ t0、$ t5は、$ t0#場所乗算器のt1の仮数

sll $ t1ので$ A1、9#シフト指数を削除する

srlの$はt1、$ t1の9

ドルはt1、$ t5は、$本館暗黙の1仮数の左に復元する#

#場所
、 製品のt4には仮数

丸めおよびオーバーフローを無視する#

$ t0、$本館significands乗算#multu(符号なし)

製品のmfhi $ t4に#t4に=上位ワード

BGE等$ t4に、$ 0、ノルム#ブランチの場合
、 すでに正規化された

srlの$ t4に、$ t4に、#を正常化する1仮数シフト

addi $ t3は、$ t3は、1指数を調整#

ノルム:暗黙的に削除する$ t4に、$ t4に、2#シフトsll 1v0で製品を組み立てる#

適切な位置にsll $ t3は、$ t3は、23#シフト指数

$ t4に、$ t4に、9、適切な位置に仮数シフト#srlの

v0#の場所記号$ v0、$ t2に移動

または$ v0、$ v0、$ t3は#位指数v0で

または$ v0、$ v0、$ t4に#場所v0の仮数戻り:#戻りソ¥ラ$ジュニア

 

Welcome to EDABoard.com

Sponsor

Back
Top