0

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

gcc -o a.out code.s

但我收到以下消息:

Error: invalid instruction suffix for 'push'

从汇编器返回。导致此问题的代码行如下:

    pushl   %ebp

我做了一些研究,说我需要使用 32-but 汇编器。有人可以告诉我我是怎么做的吗?

4

2 回答 2

0

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

所以只需这样做:

gcc -Wall -m32 code.s
于 2013-09-17T16:24:32.937 回答
0

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

您的选择:

  1. 使用 32 位工具编译,并发出 32 位对象。
  2. 将汇编代码移植到 64 位。
于 2013-09-17T16:25:09.193 回答