【问题标题】:Using a 32 bit assembler使用 32 位汇编程序
【发布时间】:2013-09-17 16:22:10
【问题描述】:

我正在尝试组装一些 32 位代码

gcc -o a.out code.s

但我收到以下消息:

Error: invalid instruction suffix for 'push'

从汇编器返回。导致这种情况的代码行如下:

    pushl   %ebp

我做了一些研究,说我需要使用 32-but 汇编器。谁能告诉我我是怎么做到的?

【问题讨论】:

    标签: assembly 32-bit


    【解决方案1】:

    您可能正在尝试在 64 位系统上执行此操作,其中 gcc 默认为 -m64

    那么就这样做吧:

    gcc -Wall -m32 code.s
    

    【讨论】:

      【解决方案2】:

      如果您有 32 位汇编代码,那么您需要使用 32 位工具集进行编译。看起来您正在使用 64 位工具集进行编译,这似乎是问题所在。您不能在一个模块中混合使用 32 位和 64 位代码。

      您的选择:

      1. 使用 32 位工具编译,并发出 32 位对象。
      2. 将汇编代码移植到 64 位。

      【讨论】:

      • 你原来的标签让我很困惑。您将其标记为 64 位的事实让我假设您想要 64 位输出。
      猜你喜欢
      • 1970-01-01
      • 2015-06-14
      • 1970-01-01
      • 2011-03-21
      • 2011-09-22
      • 2015-05-28
      • 1970-01-01
      • 2016-06-28
      • 2016-03-31
      相关资源
      最近更新 更多