我在尝试学习一些MIPS时正在研究一个小型的迷你编译器。这是我的问题:
MIPS有一条指令li(立即加载),它可以像这样工作
li $5,100
将100加载到寄存器5中。
但是,我现在需要将浮动加载到寄存器中并且正在努力找出一种方法来实现它...因为li $ 5,2.5不起作用。
有人有什么建议吗?
我在C中工作,我想我可以以某种方式得到我正在使用的浮点数的整数表示(即浮点二进制表示== ints二进制表示)然后将“整数”加载到寄存器中从那时起它就像一个漂浮物。
也许为时已晚,但我现在卡住了。
答案 0 :(得分:14)
MARS 不似乎有任何指令/伪指令将浮点立即值加载到浮动寄存器中。相反,您需要将浮点值放在内存中并从内存加载寄存器:
.data
fp1: .double 2.5
fp2: .double -0.75
.text
l.d $f0, fp1
l.d $f2, fp2
答案 1 :(得分:9)
您需要使用浮点寄存器来加载浮点数。
而不是:
li $5,2.5
尝试:
li.s $f5,2.5
看看mfc1和mtc1指令在整数和浮点寄存器之间移动。