Как я могу поместить значение переменной в стек?

В моей программе Mips мне нужно сохранить значение переменной в стеке, но когда я пытаюсь сохранить его в том месте, на которое указывает указатель стека, я получаю синтаксическую ошибку (в последней строке, показанной ниже) в QtSpim. Для меня это правда, что мы можем переключить регистр с плавающей запятой на позицию в стеке. Я действительно не понимаю причину этой ошибки и буду признателен за любую помощь.

li.s $f12,4.0
s.s $f12,A
addi $sp,$sp,-4
sw $ra,0($sp)
addi $sp,$sp,-4
l.s $f18,A
sw $f18,0($sp) #causes syntax error !

person Goju    schedule 21.01.2019    source источник
comment
Подумайте о машинном кодировании для sw: у него есть только 5-битное поле, чтобы указать, какой целочисленный регистр хранить. Код операции, хранящий регистры FP, имеет другую мнемонику. (Кстати, вам не нужны две отдельные инструкции addi. Просто измените sp один раз и используйте хранилища со смещениями 0(sp) и 4(sp).) Кроме того, если бы вы использовали целочисленный регистр для копирования 4 байтов из A в стек, вы могли бы использовать sw.   -  person Peter Cordes    schedule 22.01.2019


Ответы (1)


Похоже, что использование lwc1 и swc1 вместо lw и sw для плавающих точек работает.

li.s $f12,4.0
s.s $f12,A
addi $sp,$sp,-4
sw $ra,0($sp)
addi $sp,$sp,-4
l.s $f18,A
swc1 $f18,0($sp) 
person Goju    schedule 21.01.2019