la指令如何在MIPS中翻译?

la指令如何在MIPS中翻译?,mips,translation,instructions,Mips,Translation,Instructions,我知道MIPS中的la分解为lui和ori但是这些指令的参数是什么 我在这里看了这个问题,但是得到的lui是否总是使用4097 考虑以下几点: .data _a: .space 4 .text main: la $s0,_a 这能转化成这个吗 lui $at,4097 ori $s0,$at,0 谢谢大家! lui加载地址的上16位,ori加载地址的下16位。地址可以是任何32位值,因此lui通常不加载4097。4097十进制

我知道MIPS中的
la
分解为
lui
ori
但是这些指令的参数是什么

我在这里看了这个问题,但是得到的
lui
是否总是使用4097

考虑以下几点:

       .data
_a:    .space    4
       .text
main:  la       $s0,_a
这能转化成这个吗

lui    $at,4097
ori    $s0,$at,0

谢谢大家!

lui加载地址的上16位,ori加载地址的下16位。地址可以是任何32位值,因此
lui
通常不加载4097。

4097十进制为0x1001。这是0x10010000的高16位

这是
mars
模拟器中
.data
段开始的默认加载地址

如果执行了
la$s0,main
lui
将是
lui$at,0x0040
,因为
.text
的默认起始地址是0x00400000

要查看差异,请尝试以下程序:

       .data
_a:    .space    100000
_b:    .space    4
       .text
main:  la       $s0,_b