计组大作业有个地方要将整数转为浮点数计算,但网上好像没有什么资料,只好自己写了一个转换函数(如果有转换指令请告知)
主要根据浮点数的存储方式,分别得到符号位、阶码和尾数,然后组合即可。具体见代码。
#将整数转换成浮点数 #这里设置待转整数为$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