Почему я не могу использовать li.s в MARS? - PullRequest
4 голосов
/ 10 ноября 2011

Я не могу использовать li.s в MARS.Я новичок в программировании MIPS, и я стараюсь не использовать какие-либо сопроцессоры.Почему я не могу использовать li.s, это MARS программа?Было бы очень полезно, если бы кто-то мог привести меня в новом направлении!

Ответы [ 2 ]

2 голосов
/ 10 ноября 2011

Это псевдоинструкция, которая, вероятно, не реализована на Марсе.Вы можете использовать последовательность li (ori) и mtc1.

Это загружает значение от 1.234 до $ fp1 и работает в MARS:

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

шестнадцатеричное или целое значение можно найти с помощью http://babbage.cs.qc.edu/IEEE-754/Decimal.html или с использованием простой программы (в Фортране, в C аналогично использованию приведения указателя):

read(*,*) a
i=transfer(a,i)
write(*,*) i
end
0 голосов
/ 10 ноября 2011

Вы можете добиться того же эффекта, что и псевдоинструкция li.s, используя псевдоинструкцию l.s и константу, сохраненную в сегменте данных:

  l.s $f1, fpconst

.data 0x1000
fpconst:
.float 1.2345

Это будет использовать регистр сопроцессора $ f1 для хранения константы с плавающей запятой.

Вы также можете поместить константу в обычный регистр, используя lw $f1, fpconst вместо l.s

...