Инициализация значения с плавающей запятой в сборке Mips32

Я изучаю ассемблер в своем университете, и мне нужно сделать ассемблерный код, который мне нужен для выполнения некоторых операций с плавающей запятой, код пока идет хорошо, но у меня есть вопрос оптимизации. Есть ли самый простой способ написать это:

.data
two: .float 2

la $a1, two
l.s $f3, ($a1)

Мне нужно, чтобы эти постоянные значения умножались на операцию bhaskara, поэтому я инициализирую этот способ для использования, например mul.s $f4,$f3,$f0


person Skalwalker    schedule 05.11.2015    source источник
comment
Вместо умножения на два вы можете добавить значение к самому себе.   -  person Michael    schedule 05.11.2015
comment
О, правда, для этого случая работает, а если мне нужно умножить на четыре?   -  person Skalwalker    schedule 05.11.2015
comment
@Skal Просто повтори. :)   -  person Alexey Frunze    schedule 05.11.2015


Ответы (1)


Есть только два способа загрузки значения в регистр с плавающей запятой на MIPS32: из регистра общего назначения (используя mtc1) или из памяти (используя lwc1/l.s).

# mtc1 example:
li   $v0, 0x3F800000 # v0 = 1.0f
mtc1 $v0, $f0        # f0 = 1.0f
person Alexey Frunze    schedule 05.11.2015
comment
Не могли бы вы привести пример использования, пожалуйста? - person Skalwalker; 05.11.2015
comment
@Скал Добавлено. Найдите и используйте справочник инструкций MIPS. - person Alexey Frunze; 05.11.2015
comment
Спасибо. Я использую один, но он все еще немного нечеткий для меня, он не дает много примеров использования. - person Skalwalker; 05.11.2015
comment
@Skal Find See MIPS Run Linux, посмотрите, поможет ли это. - person Alexey Frunze; 05.11.2015