【问题标题】:gcc assembler on absolute memory addressing绝对内存寻址上的 gcc 汇编器
【发布时间】:2012-06-16 13:09:32
【问题描述】:

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

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

【问题讨论】:

    标签: assembly


    【解决方案1】:

    你少了一个逗号:

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

    构建良好。

    【讨论】:

      【解决方案2】:

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

      movl $sourceaddr, $destaddr
      

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

      64 位机器不应该有什么不同,因为您指定了-m32,它将组装代码以在 32 位平台上运行。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-06-11
        • 1970-01-01
        • 2013-11-05
        • 1970-01-01
        • 1970-01-01
        • 2020-01-16
        • 2012-01-19
        • 1970-01-01
        相关资源
        最近更新 更多