MIPS浮点数,无穷大和nan练习

时间:2020-05-13 15:43:10

标签: mips mips32

我正在尝试制作一个程序,该程序可以进行以下程序中的计算。我在QtSpim中运行它,但是它显示了有关如何加载无穷大以及可能还有其他lwc1的错误,并且我不知道如何实际加载它们。我知道程序会在我的计算结果中显示错误,该练习仅是为了练习,并查看MIPS在任何情况下如何工作。

    .text
    .globl main

main:

    la $a0, msgx #Print msgx
    li $v0, 4
    syscall

    li $v0, 6    #Type x
    syscall

    s.s $f0, float1

    la $a0, endl #New line
    li $v0, 4
    syscall

    la $a0, msgy #Print msgy
    li $v0, 4
    syscall

    li $v0, 6    #Type y
    syscall

    s.s $f0, float2

    la  $a0, float1 #load x
    l.s $f1, 0($a0)

    la  $a1, float2 #load y
    l.d $f2, 0($a1)

    la  $s0, zero   #load 0.0
    l.s $f3, 0($t0)

    la  $s1, plus   #load plus infinity
    lwc1 $f4, 0($t1)

    la  $s2, minus  #load minus infinity
    lwc1 $f5, 0($t2)

    la  $s3, NaN    #load NaN
    lwc1 $f6, 0($t3)

    mul.s $f0, $f1, $f2 # x * y
    #mul.s $f0, $f1, $f5 # x * (minus inf)
    #div.s $f0, $f2, $f3 # y / 0
    #div.s $f0, $f3, $f3 # 0 / 0
    #mul.s $f0, $f3, $f4 # 0 * (plus inf)
    #mul.s $f0, $f4, $f5 # (plus inf) * (minus inf)
    #add.s $f0, $f4, $f5 # (plus inf) + (minus inf)
    #mul.s $f0, $f1, $f6 # x * NaN

    mov.s $f12, $f0

    li $v0, 2
    syscall

    li        $v0, 10
    syscall

    .end main

    .data

msgx: .asciiz "Write x: " 
endl: .asciiz "\n"
msgy: .asciiz "Write y: "
float1: .float 0.0 # $f1
float2: .float 0.0 # $f2
zero: .float 0.0
plus: .word 7F800000
minus: .word FF800000
NaN: .word FFFFFFFF

1 个答案:

答案 0 :(得分:0)

nohup python3 statlogger.py & -db=stat_logger_db -sn=test