8

MIPS では、la命令は と に変換されluiますori。ただし、MARS Simulator はそれをまったく行っていないようです。次のマシンコードをダンプすると:

.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

これは明らかにです。la1命令としてダンプです。MARSは何をしますか?と解釈laするにはどうすればよいですか?luiori

ありがとうございました、

4

1 に答える 1

9

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

と解釈laするにはどうすればよいですか?luiori

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

于 2011-11-28T02:28:56.247 に答える