首页 > 解决方案 > 汇编 - 'push' 的操作数类型不匹配

问题描述

我正在编写一些汇编代码,使用sys_connect系统调用连接到另一台机器上的侦听套接字。对于这个系统调用,我需要将 IP 地址以十六进制格式推送到堆栈中。这就是我目前正在做的事情:

connect:
    .......

    push        $0x8088A8C0                # The ip address in reverse order hexadecimal format
    pushw       $0x907e                 # Port in byte reverse order = 32400
    pushw       $2                          # AF_INET

    lea         (%rsp), %r11               # Struct pointer

    movq        $42, %rax
    movq        %r12, %rdi
    movq        %r11, %rsi
    movq        $16, %rdx
    syscall

gcc 编译器返回给我这个错误:

Error: operand type mismatch for `push'

该错误属于说明 push 的行$0x8088A8C0。我应该如何解决这个问题?提前致谢!

标签: assembly64-bitx86-64att

解决方案


推荐阅读