2013-05-18 19 views
5

Ich möchte zwei Werte teilen, die in $tn Register sind.Convert Integer zu Double in MIPS

Ich muss diese zwei Werte teilen, um ein doppeltes Ergebnis zu erhalten, aber die Funktion div gibt nur den ganzzahligen Teil dieser Abteilung zurück, kann jemand helfen?

Muss ich $t1 und $t2 zu $f0 und $f2 konvertieren?

Wie mache ich das?

li $t1,2 
li $t2,5 

div $f0,$t2,$t1 

Das gibt mir einen Fehler, da es einen $tn Wert keine $fn Wert erwartet ...

Antwort

9

Sie müssen die ganze Zahl in einem Universalregister zu Floating-Point-oder Doppelregister gespeichert bewegen und zu konvertieren.

Vorausgesetzt, dass Ihre Nummer wird in $a1, gespeichert auf einem Doppelpaar zu konvertieren ($f12, $f13) Sie erlassen:

mtc1.d $a1, $f12 
    cvt.d.w $f12, $f12 

Und es auf eine einzige Präzision Schwimmer zu konvertieren ($f12) würden Sie tun:

mtc1 $a1, $f12 
    cvt.s.w $f12, $f12 
+0

^^ wie immer dank: D –

+0

Diese Referenz hat mir geholfen, dieses mehr zu verstehen https://www.cs.tcd.ie/~waldroj/itral/spim_ref.html – Brian