MIPS"la"伪指示

dar*_*sky 7 assembly mips mars-simulator

在MIPS中,la指令转换为luiori.但是,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: "
Run Code Online (Sandbox Code Playgroud)

我明白了:

00100000000001000010000000000000
00100000000001010010000000101000
10001100101001010000000000000000
Run Code Online (Sandbox Code Playgroud)

这显然是.它倾销la为一条指令.MARS做什么?我该如何解释laluiori

谢谢,

dus*_*uff 8

这里发生的事情是,你的汇编正在编制这些la为s addi $<dest>, $0, <value>.只有在16位立即数中不能表示的值才需要双指令序列; 您正在使用这里的值样子0x20000x2028,使其适合在一个单一的指令.

我该如何解释laluiori

加载更大的常量.:)您的汇编程序也可以选择强制使用完整序列,即使它没有必要.