Assembly MIPS";la";伪指令
在MIPS中,Assembly MIPS";la";伪指令,assembly,mips,mars-simulator,Assembly,Mips,Mars Simulator,在MIPS中,la指令转换为lui和ori。然而,火星模拟器似乎并没有做到这一点。当我转储以下机器代码时: .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: " 我得到: 00100000000001
la
指令转换为lui
和ori
。然而,火星模拟器似乎并没有做到这一点。当我转储以下机器代码时:
.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
这很明显。它作为一条指令转储la
。火星做什么?我如何让它将la
解释为lui
和ori
谢谢,这里发生的事情是,您的汇编程序正在将这些
la
s编译为addi$,$0,
。两个指令序列仅适用于不能用16位立即数表示的值;这里使用的值类似于0x2000
和0x2028
,因此它们适合于一条指令
我如何让它将la
解释为lui
和ori
加载更大的常量<代码>:)您的汇编器可能还可以选择强制使用完整序列,即使它是不必要的