【问题标题】:How to read .s file with GCC? [closed]如何使用 GCC 读取 .s 文件? [关闭]
【发布时间】:2020-03-24 10:27:23
【问题描述】:

我有一个关于使用 GCC 读取 .s 文件的问题。

我使用的是 Ubuntu 18.04 和 GCC。

我想通过像这样读取 .s 文件来制作 MIPS 汇编器:

$./runfile 汇编文件

这里,runfile 是 c/c++ 的输出文件,“汇编文件”是 .s 文件。

我必须为此做些什么?

【问题讨论】:

  • 我不明白你在做什么。什么是“c/c++ 的输出文件”?如果您想编写汇编程序,请阅读一些有关词法分析和解析技术的文献。
  • 对不起。我写得含糊其辞。我只想用 C/C++ 编写关于 MIPS 汇编器的代码。 (因为这是作业。)我必须使用 C/C++ mips 编译器读取 .s 文件并将 .s 文件编译为二进制文件(.o 文件)
  • @Karo 如果您想使用 GCC for MIPS 将程序集 (.s) 文件组装成目标文件,那么我不明白您为什么需要自己的汇编程序。毕竟,GCC for MIPS 确实包含一个汇编程序。
  • 在大多数发行版上,如果你有 clang,你甚至不需要交叉编译器包。例如在 Arch Linux 上,clang -c -target mips 可以组装 MIPS .s 文件。所以你不需要安装 MIPS 交叉编译器和交叉汇编器。 (Ubuntu 的 gcc-mips 包应该在同一个包中包含 gcc 本身和 cross-binutils,所以如果你想要 GNU 工具链安装它。)

标签: c++ c assembly


【解决方案1】:

首先,gcc 知道 '*.s' 文件是汇编文件,因此它可以将其“编译”为对象而无需任何附加信息:

$(CXX) x.s -c

这会从您的程序集文件中创建文件x.o

如果您还想使用预处理器指令/宏,可以添加-xassembler-with-cpp

$(CXX) -xassembler-with-cpp x.s -c

或者文件扩展名必须是大写的.S,和gcc的效果一样。

CXX 必须是你的 mips 跨 gcc。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-14
    • 2022-01-09
    • 2012-08-01
    • 2011-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-25
    相关资源
    最近更新 更多