从x86_64 Linux中的嵌入式asm进行Syscall?

为什么打印此垃圾而不是正常退出程序?我在BSD上以这种方式使用系统调用,并且我想知道要使其在Linux中工作需要什么。

int

main(int argc, char **argv)

{

__asm ("movq $1,%rax; movq $0,%rdi; syscall"); /* exit(0) ? */

return 0;

}

谢谢。

回答:

为什么打印此垃圾而不是正常退出程序?

根据CESA-2009-001,“

Syscall 1在i386上退出但在x86_64上写入”。

我需要什么才能使其在Linux中工作

使用当前unistd_64.h中的syscall

顺序

希望这可以帮助!

以上是 从x86_64 Linux中的嵌入式asm进行Syscall? 的全部内容, 来源链接: utcz.com/qa/416813.html

回到顶部