2011-11-28 27 views
7

MIPSでは、la命令はluioriに変換されます。しかし、MARS Simulatorはまったくそのようには見えません。私は、次のマシンコードダンプするとき:MIPS "la"疑似命令

.text 
    la $a0, array 
    la $a1, array_size 
    lw $a1, 0($a1) 

.data 
    array: .word 0:10 
    array_size: .word 10 
    message: .asciiz "The sum of numbers in array is: " 

を私が取得:

明らかである
00100000000001000010000000000000 
00100000000001010010000000101000 
10001100101001010000000000000000 

。 1つの命令としてlaをダンプしています。 MARSは何をしていますか? laluioriと解釈するにはどうしたらいいですか?

は、ここでは何が起こっている

答えて

8

は、あなたのアセンブラがaddi $<dest>, $0, <value>としてこれらla Sをコンパイルしていることで、ありがとうございます。 2命令シーケンスは、16ビットの即値で表現できない値に対してのみ必要です。ここで使用している値は0x20000x2028のように見えるので、1つの命令に収まります。

は、どのように私はそれがluioriとしてlaを解釈することができますか?

大きな定数をロードします。 :)アセンブラには、不要な場合でも完全なシーケンスを強制的に使用するオプションがあります。