我正在开发一个程序,它需要在x86_64汇编中做大量工作.关于64位Linux可用的syscall的官方文档在哪里?我能找到的大多数文档要么是不完整的,要么是针对C系统调用的,或者是针对32位Linux的(使用INT 0x80而不是syscall).
我可以在哪里找到列出系统调用编号的文档,以及哪些寄存器中需要有哪些值才能使调用工作?
我正在开发一个程序,它需要在x86_64汇编中做大量工作.关于64位Linux可用的syscall的官方文档在哪里?我能找到的大多数文档要么是不完整的,要么是针对C系统调用的,或者是针对32位Linux的(使用INT 0x80而不是syscall).
我可以在哪里找到列出系统调用编号的文档,以及哪些寄存器中需要有哪些值才能使调用工作?
关于syscall,我发现Google上的x86-64 Linux系统调用-它甚至有什么寄存器来放入参数(您会注意到它们与上面描述的一模一样).给你:https://blog.rchapman.org/posts/Linux_System_Call_Table_for_x86_64/美元
正如@Fuz指出的,syscall(即所有syscall)的调用约定与常规函数调用的调用约定相同.实质上,参数按照该特定顺序加载到寄存器RDI、RSI、RDX、R10、R8和R9中.