MIPS 浮点平方结果为 0

问题描述

我正在做一项作业,其中第一个任务集是计算两个矩阵的差值的 frobeneous 范数(平方和)。我正在尝试使用单精度浮点数来执行此操作,但是在对浮点数求平方时得到了一些奇怪的结果。这发生在第 276 行的 frobeneousnorm 标签中。例如,我已将差分矩阵的第一个索引的值加载到我的 $t3 寄存器中(应该约为 8060928)。然后我使用 mtc1 $t3 $f4 将该值转换为单精度浮点数,当检查寄存器时,它在 1.1295766E-38 中存储一个$f4。然后我使用 mul.s $f7 $f4 $f4 将浮点值乘以自身。但是,当我之后检查 $f7 中的值时,它读取为 $f7 0.0。我不太确定这里出了什么问题,任何帮助将不胜感激。我已经发布了下面的代码片段,并注意注释是一个签名,其中 $a0 保存差分矩阵(每个字节都是一个新索引的浮点数),$a1 是差分矩阵(在本例中为 64,因此是 4096 个 64 x 64 的索引矩阵)。

# Todo: float frobeneousnorm( float* A,int N )
frobeneousnorm: la $t0 ($a0)
        move $t1 $a1
        mul $t1 $t1 $t1
        li $t2 0
        li $t3 0
        li $t4 0
        li $t5 0
        mtc1 $zero $f6 
        mtc1 $zero $f7
        frobLoop:   beq $t2 $t1 frobLeave
                lw $t3 ($t0)
                mtc1 $t3 $f4
                mul.s $f7 $f4 $f4
                add.s $f6 $f6 $f7  
                addi $t0 $t0 4
                addi $t2 $t2 1
                j frobLoop
                
        frobLeave:  sqrt.s $f0 $f6
                jr $ra

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...