2016-10-31 6 views
0

私は非常に単純なプログラムを実行しようとしていますが、私はエラーを取得しておいてください。Invalid language elementアセンブリ無効な言語要素のMIPS

lw $t0, 0($a0)    #load integer from $a0->$t0 
beq $t0, 1, 1dimensional  #branch if $t0=1 

1dimensional: 
do something 

私はエラーを取得していますなぜ私は理解して傾けます。

+0

http://www.mrc.uidaho.edu/mrc/people/jff/digital/MIPSir.html BEQには、2つのレジスタオペランドとラベルがあり、即時ではありません。 –

+0

@PeterCordes 2番目の引数としてimmediateを使うのは_valid_です。なぜなら、 'beq'は擬似op [アセンブラがそれをサポートしていれば、' mars'がする]ためです。 'addi $ at、$ zero、1' /' beq $ at、$ t0,1dimensional'を生成します。 –

+0

ああ、それでは、http://stackoverflow.com/questions/16760255/why-we-cant-compare-bne-beq-a-register-with-an-immediate-assembly-mipsの複製ではありません。あなたが$ r1を破壊するアセンブラを使用しているときに、beqを擬似命令として拡張しているならば。それは私にとっては本当に奇妙なことですが、アーキテクチャレジスタが31個あるときは、OSが非同期にクラウドすることが許される2つのような、それらのいくつかを無駄にするのは「大丈夫」と思います。 –

答えて

2

エラーメッセージの重要な部分、つまりは何ですか?は無効な言語要素でした。
アセンブラが文句を言っているのは、ラベル1dimensionalです。アセンブラでは、文字の最初の文字として文字とアンダースコア(そして場合によっては単一の.)のみを許可するのが一般的です。そのラベルの名前をその要件を満たすものに変更します(例: onedimensional