我使用的机器是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'我想知道为什么会发生这种情况。有人能帮我吗?谢谢。
发布于 2012-06-16 21:13:34
您缺少一个逗号:
movl $0x12e48ead, 0x0804b324
pushl $0x08049103
ret构建良好。
发布于 2012-06-16 21:13:22
这看起来像是语法错误- mov的语法是:
movl $sourceaddr, $destaddr注意逗号和美元符号!当然,sourceaddr和destaddr也可以是寄存器。
64位的机器应该不会有什么不同,因为您已经指定了-m32,它将汇编在32位平台上运行的代码。
https://stackoverflow.com/questions/11063700
复制相似问题