0

我使用的机器是 64 位的,我编写了这样的汇编代码:

movl $0x12e48ead 0x0804b324
pushl $0x08049103
ret

使用 AT&T 格式。当我使用命令行编译它时:

gcc -m32 -c firecracker.S

结果错误如下:

firecracker.S: Assembler messages:
firecracker.S:1: Error: junk `0x0804b324' after expression
firecracker.S:1: Error: suffix or operands invalid for `mov'

我想知道为什么会这样。有人可以帮帮我吗?谢谢。

4

2 回答 2

0

这看起来像一个语法错误 - mov 的语法是:

movl $sourceaddr, $destaddr

注意逗号和美元符号!当然,sourceaddr 和 destaddr 也可以是寄存器。

正如您所指定的,64 位机器不应该有什么不同,-m32它将组装代码以在 32 位平台上运行。

于 2012-06-16T13:13:22.193 回答
0

你少了一个逗号:

movl $0x12e48ead, 0x0804b324
pushl $0x08049103
ret

构建良好。

于 2012-06-16T13:13:33.707 回答