绝对内存寻址的gcc汇编程序

时间:2012-06-16 13:09:33

标签: assembly

我使用的机器是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'

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

2 个答案:

答案 0 :(得分:0)

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

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

64位机器应该没有区别,因为你已经指定了-m32,它将汇编代码以便在32位平台上运行。

答案 1 :(得分:0)

你错过了一个逗号:

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

构建良好。