7

我正在研究一个小型迷你编译器,同时尝试在这里学习一些 MIPS。这是我的问题:

MIPS 有一个指令 li (立即加载),它可以像这样工作

li $5,100

这会将 100 加载到寄存器 5 中。

但是,我现在需要将浮点数加载到寄存器中,并且正在努力寻找一种方法来做到这一点......因为 li $5,2.5 不起作用。

有人有什么建议吗?

我在 C 中工作,我在想我可以以某种方式获得我正在使用的浮点的整数表示(即浮点二进制表示 == ints 二进制表示)然后将“整数”加载到寄存器中并像对待它一样从此浮出水面。

也许为时已晚,但我现在卡住了。

4

2 回答 2

31

MARS似乎没有将浮点立即值加载到浮点寄存器中的任何指令/伪指令。相反,您需要将浮点值放入内存并从内存中加载寄存器:

.data
fp1: .double 2.5
fp2: .double -0.75

.text   
l.d $f0, fp1
l.d $f2, fp2
于 2012-10-16T13:41:03.327 回答
10

您将需要使用浮点寄存器来加载您的浮点数。

代替:

li $5,2.5

尝试:

li.s $f5,2.5

看看 mfc1 和 mtc1 指令在整数和浮点寄存器之间移动。

于 2010-04-07T00:41:28.423 回答