Ich versuche, ein sehr einfaches Programm auszuführen, aber ich erhalte immer die Fehlermeldung: Invalid language element
Montag Ungültige Sprachelement Mips
lw $t0, 0($a0) #load integer from $a0->$t0
beq $t0, 1, 1dimensional #branch if $t0=1
1dimensional:
do something
Ich kann nicht verstehen, warum ich die Störung erhalten.
http://www.mrc.uidaho.edu/mrc/people/jff/digital/MIPSir.html sagt BEQ nimmt zwei Register Operanden und ein Label, nicht eine sofortige. –
@PeterCordes Die Verwendung eines direkten als zweites Argument ist _valid_, weil 'beq' ein Pseudo-Op ist [wenn der Assembler es unterstützt, was' mars' tut]. Es erzeugt die folgende "echte" Befehlssequenz: addi $ at, $ null, 1'/'beq $ at, $ t0,1dimensional'. –
Ah, ok, dann nicht ein Duplikat von http://Stackoverflow.com/questions/16760255/why-we-cant-compare-bne-beq-a-register-with-animediate-assembly-mips, wenn Sie einen Assembler verwenden, der $ r1 für Sie zerstört, während Sie beq als Pseudo-Op erweitern. Das scheint mir ziemlich komisch, aber ich denke, wenn man 31 Architekturregister hat, ist es in Ordnung, einige von ihnen zu verschwenden, so wie die beiden, dass das Betriebssystem asynchron klobbern darf. –