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 个字节的值会得到什么值?
您在执行此操作时是否尝试查看各种(例如浮点)寄存器中的值?
仅供参考,处理器可以将浮点比较用于条件分支,而无需将浮点值转换为整数。
所以我在 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 个字节的值会得到什么值?
您在执行此操作时是否尝试查看各种(例如浮点)寄存器中的值?
仅供参考,处理器可以将浮点比较用于条件分支,而无需将浮点值转换为整数。