Я пытаюсь выполнить очень простую программу, но я получаю ошибку: Invalid language element
сборочно-инвалидные MIPS элемент языка
lw $t0, 0($a0) #load integer from $a0->$t0
beq $t0, 1, 1dimensional #branch if $t0=1
1dimensional:
do something
Я не могу понять, почему я получаю сообщение об ошибке.
http://www.mrc.uidaho.edu/mrc/people/jff/digital/MIPSir.html говорит, что BEQ принимает два регистровых операнда и метку, а не сразу. –
@PeterCordes Использование немедленного, поскольку второй аргумент _valid_, потому что 'beq' является псевдооператором [если ассемблер поддерживает его, что делает« mars'). Он генерирует следующую «реальную» последовательность команд: 'addi $ at, $ zero, 1' /' beq $ at, $ t0,1dimensional'. –
Ах, ладно, тогда не дубликат http://stackoverflow.com/questions/16760255/why-we-cant-compare-bne-beq-a-register-with-an-immediate-assembly-mips в конце концов, если вы используете ассемблер, который будет уничтожать $ r1 для вас при расширении beq как псевдооператора. Это кажется мне очень странным, но я думаю, что когда у вас есть 31 архитектурный регистр, это «нормально», чтобы отбросить некоторые из них, как и два, что ОС разрешено асинхронно сжиматься. –