MIPS——整数转为浮点数

计组大作业有个地方要将整数转为浮点数计算,但网上好像没有什么资料,只好自己写了一个转换函数(如果有转换指令请告知)

主要根据浮点数的存储方式,分别得到符号位、阶码和尾数,然后组合即可。具体见代码。

#将整数转换成浮点数
#这里设置待转整数为$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

 

posted @ 2020-12-11 22:44  yanying  阅读(970)  评论(0编辑  收藏  举报