assembly - 如何在不使用伪指令的情况下加载内存地址?

标签 assembly mips mips32 mars-simulator

我正在尝试使用 自己学习 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 是否可行?如何?

提前致谢!

最佳答案

要回答修改后的问题“这是否可以专门使用 MARS,而无需伪指令?”:从 MARS 文档的快速扫描来看,似乎不是。 MARS 似乎是出于教学目的而有意限制的。

如果您想在完整的 MIPS 模拟器上尝试此操作,该模拟器将模拟在 MIPS 上运行的 Linux 操作系统并运行使用 gnu 工具链构建的代码,请查看 OVP Simulator .这是免费的,可在 Linux 和 Windows 上运行,但它可能比您需要的要多得多。

关于assembly - 如何在不使用伪指令的情况下加载内存地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7264532/

相关文章:

c - 汇编成 C 代码

linux - 如何在 Linux 中使用 NASM 汇编获取系统时间而不使用从 C 导出的函数?

Mips 函数参数和返回值

linux - 内核模块中的 ip header 更改会中断连接

MIPS架构系统调用指令

go - 在 Arduino Yún 上执行 Go 程序

c - SHLD/SHRD 指令的 SIMD 版本

c++ - 汇编器 push rdi, pop rdi around function call

assembly - MIPS 程序集 - 随机整数范围

从内存加载一侧的 C 三元条件运算符到 MIPS 程序集