Хорошо, инструкции li
и la
являются псевдо-инструкциями, которые должны быть распознаны ассемблером, но возможно, вашей среде нужно что-то сделать, чтобы определить их (меня не удивит, если они были макросами).
Попробуйте изменить их на "настоящую" форму:
li $v0,4 --> lui $v0,0; ori $v0,$v0,4
la $a0,bye --> lui $a0,bye>>16; ori $a0,$a0,bye&ffff
Или то, что ваш конкретный ассемблер MIPS использует для RIGHT-SHIFT-16-BITS
и AND
.
Инструкция ls
, которую я никогда раньше не видел. Вы уверены, что это не опечатка для la
? И я думаю beqz
должно быть beq
. Большинство процессоров используют одну и ту же инструкцию по-разному, например, при уменьшении регистра до нуля (z) и при сравнении регистра с чем-либо (eq) устанавливается нулевой флаг.
Ни один из ls
, beqz
или move
не отображается на странице MikS в ассемблере Википедии , хотя последние два перечислены как псевдоинструкции в Patterson & Hennessy .
Так что все больше и больше похоже на то, что вам нужны дополнительные настройки, чтобы заставить работать псевдоинструкции.