来自x86_64 Linux中的内联asm的Syscall?

12 c linux assembly x86-64 inline-assembly

为什么打印垃圾而不是优雅地退出我的程序?我在BSD上以这种方式使用系统调用,我想知道在Linux中它需要什么才能使它工作.

int
main(int argc, char **argv)
{
    __asm ("movq $1,%rax; movq $0,%rdi; syscall"); /* exit(0) ? */
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

谢谢.

Mar*_*Ray 13

为什么打印垃圾而不是优雅地退出我的程序?

根据CESA-2009-001,"Syscall 1在i386上退出,但在x86_64上写".

我需要什么才能使它在Linux中运行

使用当前unistd_64.h中的系统调用序号

希望这可以帮助!