在程序集 Mips32 中初始化浮点值

Initializing a float value in Assembly Mips32

提问人:Skalwalker 提问时间:11/5/2015 最后编辑:MichaelSkalwalker 更新时间:11/5/2015 访问量:918

问:

我正在我的大学学习汇编,我需要做一个汇编代码,我需要进行一些浮点操作,到目前为止代码进展顺利,但我有一个优化问题。有没有最简单的方法可以写这个:

.data
two: .float 2

la $a1, two
l.s $f3, ($a1)

我需要这个常量值在 bhaskara 操作上相乘,所以我以这种方式初始化以使用 likemul.s $f4,$f3,$f0

装配 优化 MIPS MIPS32

评论

0赞 Michael 11/5/2015
与其乘以 2,不如给自己添加一个值。
0赞 Skalwalker 11/5/2015
哦,没错,它适用于这种情况,但是如果我需要乘以四?
0赞 Alexey Frunze 11/5/2015
@Skal 重复一遍。:)

答:

1赞 Alexey Frunze 11/5/2015 #1

在 MIPS32 上,只有两种方法可以将值加载到浮点寄存器中:从通用寄存器(使用 )或从内存(使用 /)。mtc1lwc1l.s

# mtc1 example:
li   $v0, 0x3F800000 # v0 = 1.0f
mtc1 $v0, $f0        # f0 = 1.0f

评论

0赞 Skalwalker 11/5/2015
你能给我举个例子吗?
0赞 Alexey Frunze 11/5/2015
@Skal补充道。查找并使用 MIPS 指令参考。
0赞 Skalwalker 11/5/2015
谢谢。我正在使用一个,但它对我来说仍然有点模糊,它没有给出太多的用法示例。
0赞 Alexey Frunze 11/5/2015
@Skal找到“See MIPS Run Linux”,看看是否有帮助。