linux - 您在哪里检查 x86-64 机器上的系统调用原型(prototype)?

标签 linux assembly x86-64 system-calls abi

也就是说,你是怎么知道的

特定系统调用需要多少个参数,

每个参数应该在哪个寄存器中,

最后是每个参数的含义?

是否有一个类似man 的命令可以告诉您这一点?

最佳答案

另请参阅:What are the calling conventions for UNIX & Linux system calls on x86-64

你要找的是kernel ABI,我找不到官网,但是有a blog有这样的信息。

在带有 int 80h 调用的 x64 中,它是:

value   storage
syscall nr  rax
arg 1   rdi
arg 2   rsi
arg 3   rdx
arg 4   r10
arg 5   r9
arg 6   r8

关于linux - 您在哪里检查 x86-64 机器上的系统调用原型(prototype)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8598975/

相关文章:

c - 缓冲区溢出仍然可行吗?

linux - 如何在 shell 脚本中复制不断增长的日志文件的新条目或新行?

c - scanf(),Linux 的 shell 输入处理不同,为什么?

assembly - 如何在 aarch64 程序集列表中轻松导航

optimization - gcc 生成的虚拟 movups

c - 对于 x86_64,Sum Array Rows 或 Sum Array Cols 哪个更快?

linux - 无法在jboss中使用部署命令执行shell脚本

具有单写入器、多个读取器的 Linux IPC

pointers - 在汇编(emu8086)中进行内存寻址时,bp和si有什么不同?

c - 从 C 到汇编