【问题标题】:How can I execute MIPS assembly programs on an x86 linux?如何在 x86 linux 上执行 MIPS 汇编程序?
【发布时间】:2010-10-02 15:13:24
【问题描述】:

是否有任何用于 x86 linux 的命令行解释器或任何其他程序集来运行 MIPS 汇编程序?

我希望能够编写简单的 MIPS 汇编程序并从本地计算机上的控制台运行它们。

我知道 SPIM,但它需要 X Windows,我很好奇是否有更好的选择。

编辑:原来它不需要 X Windows。我仍然有 SPIM 的问题。在我的拙见中不是最好的。 Qemu / 交叉编译的工具链需要更多的工作,但我的怪癖更少。

【问题讨论】:

  • 另外,没有“X windows”之类的东西。
  • @XTL X-Windows 是 X11 或 X 的非正式名称

标签: linux assembly x86 mips qemu


【解决方案1】:

顺便说一下,Spim 不需要 X Windows。它也有一个控制台界面。运行spimxspim

【讨论】:

  • xspim 现在有了自己的妙语:“90 年代被称为 - 他们希望他们的 spim GUI 回来。”
【解决方案2】:

您将需要一个交叉编译工具链,或者构建您自己的交叉 binutils。 对于预构建的工具链,您可以访问code sourcery。如果您只想编译程序集,那么所有 你需要的是binutils。 Linux Mips wiki 上有一些指导方针

对于仿真部分,我会选择 QEmu。

【讨论】:

  • Qemu + CodeSourcery 满足所有需求!
【解决方案3】:

MARS 让我的 MIPS 架构的汇编编程变得如此简单。如果您想要 GUI/IDE,我肯定会推荐 MARS。

【讨论】:

    【解决方案4】:

    我昨天也遇到了同样的情况。我也不喜欢 SPIM,所以这就是我所做的:

  • 安装了 gxemul 和 gxemul-doc(这些是 debian 上的包名)
  • 按照文档中的详细说明在模拟 MIPS 机器上安装了 netbsd
  • 因为netbsd 已经包含了标准的gcc 工具链和vi,所以你可以开始了。

    设置网络也非常简单且有据可查。这样做的好处是不需要摆弄交叉编译。

  • 【讨论】:

    • 如果你发现自己没有这些,我发现 MARS 比 SPIM 优越得多。它是一个 Java .jar 文件,因此可以跨 linux/windows 工作。我喜欢它的原因是它有一个内置的调试器,我可以单步执行我的代码或代码破解,并查看所有寄存器的值。帮助大量调试。
    • 谢谢,这实际上是我们大学使用的。但我希望能够从汇编代码中调用 c 函数,但我认为 MARS 不支持这一点。 ;) 另外,很高兴能够检查“gcc -S somecprog.c”的输出。
    • 您从哪里获得 FreeBSD 的 ISO?我看到它正在积极开发,但我看不到从哪里获得 CD 映像。无论如何,我现在正在尝试 Debian。
    【解决方案5】:

    您可以使用 gxemul,它模拟 MIPS 机器(其中包括 Dreamcast),并且能够运行许多操作系统(包括 linux、netbsd 等)。

    gxemul-wikipedia

    gxemul-home page

    【讨论】:

      【解决方案6】:

      QEmu 有一个很好的 MIPS 模拟器。将其与交叉编译的 GCC/binutils 相结合(从技术上讲,您只需要 binutils 即可获得 GAS,即 GNU 汇编程序),您就可以开始了。

      【讨论】:

      • 哦,你好。显然我们都是模拟器的傻瓜,睡眠时间表相似;)
      • @Cody Brocious,嗨,哈哈。您是否编写了自己的反汇编程序或汇编程序?作为学习练习值得写吗?我有很多问题想问你,哈哈。
      • 我在各种场合都做过(在做反编译器开发时写了很多disasms)。如有任何问题,请随时在bloomfilter 向我提问。
      【解决方案7】:

      假设您希望使用 GCC。

      在 x86-64 系统上编译 MIPS,然后使用模拟器运行可执行文件的步骤:

      1. 使用交叉编译工具链生成可执行文件。

        • 如果您使用的是 Debian/Ubuntu,请为 MIPS 安装交叉编译工具链。例如,以下任一 APT 包:gcc-mips-linux-gnu(MIPS 大端)或gcc-mipsel-linux-gnu(MIPS 小端)。

        • 使用mips-linux-gnu-gcc 编译(mipsel-linux-gnu-gcc 用于小端 MIPS);使用mips-linux-gnu-as 组装;使用mips-linux-gnu-ld链接。

      2. 使用模拟器运行可执行文件。

        • 安装一个模拟器,可以在另一种架构(例如 x86-64)上启动为一种架构(例如 MIPS)编译的 Linux 程序:sudo apt-get install qemu-user

        • 使用模拟器运行为 MIPS 编译的可执行文件:qemu-mips ./a.out(或 qemu-mipsel ./a.out 用于小端 MIPS)。简单地运行./a.out 也可能有效;如果您(或您的发行版的 qemu 包)已设置 binfmt-misc 以透明地运行 qemu-user,则模拟器可能会自动使用。

      【讨论】:

        【解决方案8】:

        也许你可以看看这些emulators?我不是专家,但清单似乎不错。

        【讨论】:

        • 这侧重于系统仿真,而不是用户态仿真。也就是说,如果你想模拟一个完整的 MIPS 盒子,而不仅仅是一个给定的 MIPS 应用程序,那么这个参考是很好的。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-08
        • 2013-05-19
        相关资源
        最近更新 更多