2015-10-10 4 views
1

Я пытаюсь создать простую функцию, добавляющую к поплавкам, переданным в качестве аргументов в MIPS. Раньше я сделал простой код для добавления Интс:MIPS с плавающей запятой добавить

move v0,a0  
    add  v0,v0,a1 
    j  ra 

Копирование это я сделал что-то так для поплавков

l.d $f0,0($a0) 
    l.d $f2,0($a1) 
    add.d $f0,$f0,$f2 
    j ra 

Что приводит к ошибке компиляции:

Error: illegal operands `l.d' 

Что я угадывание связано с тем, как я пытаюсь получить аргументы из a0. Как я могу получить двойные аргументы с плавающей запятой, добавив их и вернув их.

Заранее спасибо

+1

Как вы передаете аргументы функции? – Michael

+1

@ Michael 'a0' и' a1' указывают на два двухместных номера? –

+0

@AlexeyFrunze: В целочисленном случае OP, казалось, передавал аргументы по значению. Неясно, продолжает ли он это делать, или переключился на передачу по адресу для версии с плавающей точкой. Вот почему я прошу разъяснений. – Michael

ответ

1

Я видел свою ошибку. Пришлось передавать их по ссылке и уважать ABI :) Спасибо

+0

Ответы существуют для ответов, а не для комментариев или для благодарности. –

+0

@AlexeyFrunze хорошо ... ответ (или подсказка, которая ведет меня к нему) была в комментариях. Подумал, что было бы целесообразно указать, что аргументы были в основном аргументами и отмечали это как решаемые. – aleperno

+0

Тогда вы могли бы попросить Майкла ответить на свой комментарий. –

1

Попробуйте ldc1 вместо l.d. l.d скорее всего макрос, и по какой-то причине он не определен/доступен.

Смежные вопросы