我正在尝试使用 MARS模拟器自行学习MIPS汇编语言。
出于教学原因,我限制自己不使用伪指令。
在尝试将某些数据的地址放入寄存器时,我遇到了一个问题,因为我无法使用la
。
我尝试将lui
与ori
结合使用,就像我直接加载数字一样,但无济于事:
.data
arr:
.byte 0xa1
.byte 0xb2
.byte 0xc3
.byte 0xd4
.byte 0xe5
.byte 0xf6
.byte 0x7a
.byte 0x8b
.byte 0x9c
.byte 0xad
.text
lui $s0, mem # <--- mars just gives me errors here :(
ori $s0, mem # ?? ...
这是否可以使用特别是MARS,没有伪指令?怎么样?
提前致谢!
答案 0 :(得分:6)
要回答修改过的问题“这是否可以使用专门的MARS,没有伪指令?”:从快速扫描MARS文档来看,它似乎没有。 MARS似乎是出于教学目的而故意限制的。
如果你想在一个完整的MIPS模拟器上试一试,它将模拟在MIPS上运行的Linux操作系统并运行使用gnu工具链构建的代码,请查看OVP Simulator。这是免费的,可以在Linux和Windows上运行,但它可能比你需要的更多很多。
答案 1 :(得分:2)
您需要在lui和ori说明中引用数据部分中的标签。这适用于gnu汇编程序(as):
.data
lab1: .byte 0xa1
...
.text
lui $s0, %hi(lab1)
ori $s0, %lo(lab1)
lw $s2, 0($s1)
...
%hi和%lo指令告诉链接器发生了什么,以便它可以将标签“lab1”的地址放在机器代码中。