Assembly 绝对内存寻址的gcc汇编程序
我使用的机器是64位的 我编写的汇编代码如下: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
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
建筑很好