assembly - 在 MIPS 汇编中将 int 转换为 float

标签 assembly mips

我的方法是溢出int寄存器并加载到float寄存器中然后转换

li $t0, 2       
sw $t0, -88($fp)    
l.s $f4, -88($fp)
cvt.d.s $f6, $f4

我正在尝试翻译这样的表达式

float a = 3.0;
float b = a / 2;

但是上面的方法没有给我一个正确的答案(打印出inf)。

那我哪里做错了?有什么建议吗?

附注2 不知道 lhs 操作数是浮点类型,因此我无法加载 2.0

最佳答案

您使用的后缀不正确; .d 将在双字(64 位)上运行。这就是您想要的:

li   $t0, 2
sw   $t0, -88($fp)
lwc1 $f4, -88($fp)
cvt.s.w $f6, $f4

关于assembly - 在 MIPS 汇编中将 int 转换为 float,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10696543/

相关文章:

assembly - SPARC - 无移位的位掩码

c++ - 十进制到IEEE单精度 float

c - 逻辑门的最基本层次是如何编写的?

c - 从 Dcache (L1) 读取值与全局变量

assembly - 为什么分支目标缓冲区会影响函数调用的返回? [WinMIPS64]

assembly - 引导加载程序中的 Masm 字符串变量导致 : Undefined symbol error

assembly - 使用 MIPS 进行冒泡排序

algorithm - 如何将此排序算法转换为 mips 程序集

assembly - MIPS 分支延迟槽和 bnez 使用相同的寄存器

assembly - 使用 stat 系统调用获取文件大小