我的问题是关于我应该如何避免使用伪指令,例如la
and li
。无论如何,许多互联网资源只是使用伪指令,这在某种程度上让我感到困惑。我的部分问题是这个片段出了什么问题。模拟器用指令吐出一个语法错误,liu
我不明白出了什么问题。
据我了解,该liu
命令获取有效位,左移 16 位,然后将其放入寄存器 ($a0)。该ori
指令获取标签,并对低 16 位执行 OR,这实际上将其添加到寄存器中。
.data
m1: .asciiz "Some string"
.text
main:
lui $a0, m1 # loads m1 into $a0 to be printed
ori $a0, $a0, m1
我不应该将标签 m1 用于liu
orori
吗?如果我不是故意的,我该怎么做呢?
我已经读过这篇文章并且我理解应该发生什么,但我仍然不确定为什么我的指令有不同的效果,以及为什么在and命令andi $a0,$a0,0x0000ffff
之前有一个。liu
ori
如果相关的话,我正在使用的 MIPS 模拟器是 QtSpim。我已经在这里和其他地方寻找这个问题的答案,但我无法理解它们。任何帮助/更正都会很棒。