我知道MIPS中的la
分解为lui
和ori
,但这些说明的参数是什么?
我在这里查看了这个问题MIPS Pseudo istructions, replacements,但结果lui
总是使用4097?
请考虑以下事项:
.data
_a: .space 4
.text
main: la $s0,_a
这会被翻译成这个吗?
lui $at,4097
ori $s0,$at,0
谢谢!
答案 0 :(得分:1)
4097十进制是0x1001。这是0x10010000的高16位。
这是.data
模拟器中mars
段开头的默认加载地址。
如果您已完成la $s0,main
,则lui
将为lui $at,0x0040
,因为.text
的默认起始地址为0x00400000。
要了解其中的差异,请尝试以下程序:
.data
_a: .space 100000
_b: .space 4
.text
main: la $s0,_b
答案 1 :(得分:0)
lui
加载地址的高16位,ori
加载地址的低16位。地址可以是任何32位值,因此lui
通常不会加载4097。