为什么我不能在MARS中使用li.s?

时间:2011-11-10 01:43:39

标签: assembly mips mips32 mars-simulator

我不能在MARS中使用li.s。我是MIPS编程的新手,我试图不使用任何协处理器。为什么我不能使用li.s是MARS的程序?如果有人能带领我走向新的方向,那将是非常有帮助的!

2 个答案:

答案 0 :(得分:2)

这是一个伪指令,可能没有在火星中实现。您可以使用li(ori)和mtc1的序列。

这会将值1.234加载到$ fp1并在MARS中运行:

li $t1,0x3f9df3b6
mtc1 $t1,$f1

可以使用http://babbage.cs.qc.edu/IEEE-754/Decimal.html或使用简单程序找到十六进制或整数值(在Fortran中,在C中使用指针转换类似):

read(*,*) a
i=transfer(a,i)
write(*,*) i
end

答案 1 :(得分:0)

您可以使用伪指令l.s和存储在数据段中的常量来实现与pseudoinstruction li.s相同的效果:

  l.s $f1, fpconst

.data 0x1000
fpconst:
.float 1.2345

那将使用协处理器寄存器$ f1来存储浮点常数。

您也可以使用lw $f1, fpconst而不是l.s

将常量放在常规寄存器中