計組大作業有個地方要將整數轉為浮點數計算,但網上好像沒有什么資料,只好自己寫了一個轉換函數(如果有轉換指令請告知)
主要根據浮點數的存儲方式,分別得到符號位、階碼和尾數,然后組合即可。具體見代碼。
#將整數轉換成浮點數 #這里設置待轉整數為$t1 轉成浮點數保存在$f1 tran: slt $t0 $t1 $0 sll $t0 $t0 31 #得到符號位 slt $t2 $t1 $0 beq $t2 0 posi not $t1 $t1 #如果$t1為負數取反 addi $t1 $t1 1 posi: addi $t2 $0 1 addi $t3 $0 0 loop1: and $t4 $t2 $t1 beq $t4 0 pass move $t5 $t3 pass: sll $t2 $t2 1 addi $t3 $t3 1 bne $t3 31 loop1 addi $t2 $0 0 addi $t3 $0 0 loop2: sll $t2 $t2 1 addi $t2 $t2 1 addi $t3 $t3 1 bne $t3 $t5 loop2 and $t2 $t2 $t1 li $t6 23 sub $t6 $t6 $t5 move $t3 $0 loop3: sll $t2 $t2 1 addi $t3 $t3 1 bne $t3 $t6 loop3 addu $t0 $t0 $t2 #得到尾數 add $t5 $t5 127 sll $t5 $t5 23 addu $t0 $t0 $t5 #得到階碼 此時$t0已經轉成$t1的浮點數表示 mtc1 $t0 $f1 #用浮點寄存器$f1存儲 jr $ra
