MIPS (или SPIM): загрузка чисел с плавающей запятой
Я работаю над небольшим мини-компилятором, пытаясь изучить MIPS здесь. Вот моя проблема:
В MIPS есть инструкция li (немедленная загрузка), которая будет работать следующим образом
li $5,100
который загрузит 100 в регистр 5.
Тем не менее, мне нужно загрузить поплавки в регистры прямо сейчас, и я пытаюсь найти способ сделать это... так как li $5,2.5 не работает.
У кого-нибудь есть совет?
Я работаю в C, я думал, что мог бы каким-то образом получить целочисленное представление с плавающей точкой, с которой я работаю (то есть, так что двоичное представление с плавающей точкой == двоичное представление ints), затем загрузить "целое число" в регистр и обрабатывать его как поплавок с тех пор.
Может быть, уже слишком поздно, но я застрял прямо сейчас.
2 ответа
Вам нужно будет использовать регистры с плавающей запятой для загрузки ваших поплавков.
Вместо:
li $5,2.5
Пытаться:
li.s $f5,2.5
Посмотрите на инструкции mfc1 и mtc1 для перемещения между регистрами целых чисел и с плавающей запятой.
MARS не имеет каких-либо инструкций / псевдо-инструкций, которые загружают непосредственные значения с плавающей запятой в плавающие регистры. Вместо этого вам нужно поместить значение с плавающей запятой в память и загрузить регистр из памяти:
.data
fp1: .double 2.5
fp2: .double -0.75
.text
l.d $f0, fp1
l.d $f2, fp2