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

Assembly 绝对内存寻址的gcc汇编程序,assembly,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

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

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

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


64位的机器不应该有什么区别,正如您指定的
-m32
,它将汇编代码以在32位平台上运行

您缺少一个逗号:

movl $0x12e48ead, 0x0804b324
pushl $0x08049103
ret
建筑很好