Mips Assembly 为什么当我的浮点数小于零时它不分支?

Mips Assembly why is it not branching when my float is less then zero?

所以我在 number: .word 0 中存储了一个值,我转换该浮点数并将其存储在 $t1 中,但是当我使用 bltz 询问存储在 $t1 中的值是否小于零时,它从不分支到“负面”功能?

   s.s $f12, number
   
   la $t0, number
   ldc1 $f2,0($t0)  # Load double floating point number
   cvt.w.d $f2, $f2
   mfc1 $t1, $f2   # Take the integer in FP Reg and put into $t1
   
 
   bltz $t1, Negative

你在混合数据类型(单浮点型和双精度型),所以我很困惑(也许处理器也是)。

s.s 使用浮点表示法将浮点数存储到内存中,IEEE 754,单精度,大小为 4 个字节

然后从与双精度相同的内存位置加载它,大小为 8 个字节(它不是)到 $f2 并告诉处理器转换这个双精度为整数。当您只提供并存储 4 个字节时,您期望加载 8 个字节的值会得到什么值?

您在执行此操作时是否尝试查看各种(例如浮点)寄存器中的值?


仅供参考,处理器可以将浮点比较用于条件分支,而无需将浮点值转换为整数。