Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly MIPS";la";伪指令_Assembly_Mips_Mars Simulator - Fatal编程技术网

Assembly MIPS";la";伪指令

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

在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: "
我得到:

00100000000001000010000000000000
00100000000001010010000000101000
10001100101001010000000000000000
这很明显。它作为一条指令转储
la
。火星做什么?我如何让它将
la
解释为
lui
ori


谢谢,

这里发生的事情是,您的汇编程序正在将这些
la
s编译为
addi$,$0,
。两个指令序列仅适用于不能用16位立即数表示的值;这里使用的值类似于
0x2000
0x2028
,因此它们适合于一条指令

我如何让它将
la
解释为
lui
ori

加载更大的常量<代码>:)您的汇编器可能还可以选择强制使用完整序列,即使它是不必要的