如何在64位Linux上编译32位汇编

时间:2016-06-17 20:27:09

标签: linux assembly x86

我制作了这个简单的装配程序:

.text

.globl _start:

_start:
    movl $1, %rax
    movl $0, %rbx
    int 0x80

我使用%eax和%ebx而不是%rax和%rbx的原始程序,因为它是32位。由于我的操作系统是64位Linux(不是作为虚拟机运行),我只是更换了寄存器。但这是我编译时会发生的事情:

ExitShellcode.s: Assembler messages:
ExitShellcode.s:6: Error: incorrect register `%rax' used with `l' suffix
ExitShellcode.s:7: Error: incorrect register `%rbx' used with `l' suffix
ExitShellcode.s:8: Error: operand size mismatch for `int'

我需要做什么?

0 个答案:

没有答案