【问题标题】:Using another assembler (MASM, NASM, TASM, etc.) with GCC在 GCC 中使用另一个汇编程序(MASM、NASM、TASM 等)
【发布时间】:2011-06-23 19:07:32
【问题描述】:

我已经在这里和互联网上查看了一段时间的问题,但我似乎无法确定是否可以使用 GAS 以外的其他方式使用 GCC 进行内联汇编。我试图找出是否不仅可以避免使用 GAS 的 AT&T 语法(虽然,我知道如何将 Intel 语法与 GAS 一起使用),而且可以避免使用扩展的 asm 格式。虽然这不是为了一个项目或我自己的好奇心以外的任何东西,但我真的很感激我能得到的任何帮助(这实际上是我在这里的第一个问题,因为我找不到关于它的答案)!另外,如果这有什么不同,我目前在 Windows 上使用 DevC++(用于 C 代码,而不是 C++)。

谢谢, 汤姆

【问题讨论】:

    标签: c gcc inline-assembly masm gnu-assembler


    【解决方案1】:

    您不能在 GCC 中使用其他内联汇编语法。内联汇编由 GCC 实现,字面上包括您编写的内联汇编及其自己的(文本)汇编输出,然后将其发送到gas 进行汇编。由于 GCC 不知道如何更改自己的输出格式以提供给另一个汇编器,因此您也无法更改内联汇编。

    【讨论】:

    【解决方案2】:

    您可以将汇编程序(“.o”或“.obj”文件)的输出与您的 C 或 C++ 程序链接起来。将您的汇编代码放在一个文本文件中。您的 IDE 或 makefile 将像组装任何 c 源文件一样组装它。唯一棘手的一点是学习如何在两个不同系统之间进行交互。

    【讨论】:

    • 是的,它是真正的“内联”还是只是对汇编程序函数的外部函数调用?你把它放在一个文本文件中是什么意思? IDE 会为我组装它吗?
    • 这不完全是对“在 GCC 中使用另一个汇编程序” 的答案,因为它不适用于具有内联汇编的源文件。我认为@nelhage 的答案是正确的(如果仍然如此)。
    猜你喜欢
    • 2014-01-03
    • 2020-09-03
    • 2011-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-06
    • 1970-01-01
    • 2017-12-26
    相关资源
    最近更新 更多