MIPS (или SPIM): загрузка чисел с плавающей запятой

Я работаю над небольшим мини-компилятором, пытаясь изучить MIPS здесь. Вот моя проблема:

MIPS имеет инструкцию li (немедленная загрузка), которая будет работать следующим образом.

li $5,100

который загрузит 100 в регистр 5.

Однако мне нужно загрузить поплавки в регистры прямо сейчас, и я изо всех сил пытаюсь выяснить, как это сделать... так как li $5,2.5 не работает.

У кого-нибудь есть совет?

Я работаю на C, я думал, что могу каким-то образом получить целочисленное представление поплавка, с которым я работаю (т.е. двоичное представление поплавков == двоичное представление ints), затем загрузить «целое число» в регистр и обработать его как поплавок с тех пор.

Может быть, уже слишком поздно, но я застрял прямо сейчас.


person James    schedule 07.04.2010    source источник


Ответы (2)


Вам нужно будет использовать регистры с плавающей запятой для загрузки ваших поплавков.

Вместо:

li $5,2.5

Пытаться:

li.s $f5,2.5

Взгляните на инструкции mfc1 и mtc1 для перемещения между целочисленными регистрами и регистрами с плавающей запятой.

person WhirlWind    schedule 07.04.2010
comment
Спасибо, это .s помогло. Я, наверное, попал бы в сено, если бы я пропустил это. Спокойной ночи. - person James; 07.04.2010
comment
Похоже, это псевдоинструкция. Как бы я на самом деле сделал это? (MARS не поддерживает li.s). Единственное, что я могу придумать, это загрузить 25 в $t0, загрузить 10 в $t1, преобразовать каждое в число с плавающей запятой, а затем разделить. - person John Kurlak; 15.11.2010

MARS похоже не имеет инструкций/псевдоинструкций, которые загружают непосредственные значения с плавающей запятой в регистры с плавающей запятой. Вместо этого вам нужно поместить значение с плавающей запятой в память и загрузить регистр из памяти:

.data
fp1: .double 2.5
fp2: .double -0.75

.text   
l.d $f0, fp1
l.d $f2, fp2
person Zack    schedule 16.10.2012
comment
Я думаю, что этот ответ следует принять, потому что большинство пользователей используют MARS в качестве своего редактора. - person therealak12; 23.03.2019