我使用的机器是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。
答案 0 :(得分:0)
这看起来像语法错误 - mov的语法是:
movl $sourceaddr, $destaddr
注意逗号和美元符号!当然,sourceaddr和destaddr也可以是寄存器。
64位机器应该没有区别,因为你已经指定了-m32
,它将汇编代码以便在32位平台上运行。
答案 1 :(得分:0)
你错过了一个逗号:
movl $0x12e48ead, 0x0804b324
pushl $0x08049103
ret
构建良好。