我正在开发一个程序,它需要在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中.

Linux相关问答推荐

为什么我们不能使用${$#}来获取传递给shell 脚本的最后一个参数?

如何判断程序是在终端上运行还是在后台运行?

Bash:将带有新行的字符串转换为带有逗号、内联的唯一值的字符串

在 Bash 中使用 shell 脚本从文件中解析版本号

linux 提取字符串中可能是第二常见模式的部分

如何使用 ftrace 过滤查看函数上方的调用堆栈?

如何从核心转储中获取线程名称?

什么命令用于在linux中创建或修改具有指定文件大小的多个文件

在 Ansible 中使用 JSON 查询过滤数据以从 ansible_fact 中提取数据

根据外部请求在 Netbeans 中启动 XDebug

为什么我不能将 Unix Nohup 与 Bash For 循环一起使用?

Bash 变量:是否区分大小写?

Linux命令删除.git文件夹以外的所有文件?

php.ini 更改,但在 Ubuntu 上无效

何时使用管道与何时使用共享内存

给定一个 linux 用户名和密码,我如何测试它是否是有效帐户?

比较文件的日期 bash

在linux上上几个目录

在不运行测试的情况下制作(从源代码安装)python

编辑文件时保留 samba 共享的文件权限