4

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

4

2 回答 2

2

这是一个伪指令,可能在 mars 中没有实现。您可以使用 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
于 2011-11-10T11:30:39.653 回答
1

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

  l.s $f1, fpconst

.data 0x1000
fpconst:
.float 1.2345

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

lw $f1, fpconst您还可以使用而不是 ls将常量放入常规寄存器中

于 2011-11-10T14:32:04.627 回答