mips 伪指令 la 可以用单个 MIPS 指令代替吗?
can the mips pseudo-instruction la be replace by a single MIPS instruction?
指令la ,-16()
可以用一条MIPS机器指令代替吗?我一直在搜索,每次我都找到 lui 和 ori.
的组合
la
是一条伪指令,并且有一种形式 — la $<target>, label
— 这对于 MARS 和 QtSPIM 来说是必不可少的,因为这些汇编器不支持 %hi 和 %lo其他汇编程序支持的功能。通过在线搜索,您发现这种形式的 la
可以转换为 lui
和 ori
(或类似的东西)。因为这可能是 la
最常见的用法,也是一种基本形式,所以我们在网上搜索时就找到了。
但是,这些汇编程序(MARS 和 QtSPIM)在允许各种不是实际机器指令的“可有可无”形式方面非常有帮助。所以,是的,您显示的表格可以用一个“添加”立即注册操作代替,您可以(并且应该)首先编写它。没有充分的理由使用它而不是更直接的 addiu
。 (但是,并非所有形式的 la
都可以用一条指令代替。)
许多伪指令生成的机器代码指令比您预期的要多。例如,在 MARS 上,la $t1, 4($t2)
生成两条机器代码指令,一条将常量 4 加载到 $at
中,另一条执行 add reg, reg, $at
— 完全没有必要,因为单个 addiu
的效果是一样的。更重要的是,汇编程序选择 add
而不是 addu
,冒着在寻址时出现虚假有符号整数溢出陷阱的风险,应始终将其视为无符号整数。
您可以使用 MARS 亲自查看 - 只需查看伪指令的反汇编即可。
指令la ,-16()
可以用一条MIPS机器指令代替吗?我一直在搜索,每次我都找到 lui 和 ori.
la
是一条伪指令,并且有一种形式 — la $<target>, label
— 这对于 MARS 和 QtSPIM 来说是必不可少的,因为这些汇编器不支持 %hi 和 %lo其他汇编程序支持的功能。通过在线搜索,您发现这种形式的 la
可以转换为 lui
和 ori
(或类似的东西)。因为这可能是 la
最常见的用法,也是一种基本形式,所以我们在网上搜索时就找到了。
但是,这些汇编程序(MARS 和 QtSPIM)在允许各种不是实际机器指令的“可有可无”形式方面非常有帮助。所以,是的,您显示的表格可以用一个“添加”立即注册操作代替,您可以(并且应该)首先编写它。没有充分的理由使用它而不是更直接的 addiu
。 (但是,并非所有形式的 la
都可以用一条指令代替。)
许多伪指令生成的机器代码指令比您预期的要多。例如,在 MARS 上,la $t1, 4($t2)
生成两条机器代码指令,一条将常量 4 加载到 $at
中,另一条执行 add reg, reg, $at
— 完全没有必要,因为单个 addiu
的效果是一样的。更重要的是,汇编程序选择 add
而不是 addu
,冒着在寻址时出现虚假有符号整数溢出陷阱的风险,应始终将其视为无符号整数。
您可以使用 MARS 亲自查看 - 只需查看伪指令的反汇编即可。