为什么在amd64 linux系统调用号码不同?

我注意到x86 int $0x80和amd64 syscall系统调用有不同的数字。 例如, sys_exit是x86中的syscall 1, sys_exit是syscall 60。 是否有不同的系统呼叫编号scheme的(历史)原因?

系统调用接口应该是非常稳定的,只允许添加。 谈到每个架构的系统调用接口是不同的,Linux员工最有可能决定清理一些累积的信息,并从头开始启动amd64系统调用。

参考: linux/Documentation/ABI/stable/syscalls

该接口与POSIX接口的大部分相匹配,并基于它和其他基于Unix的接口。 它只会被添加到一段时间,而不是从它删除的东西。

请注意,该接口对于Linux支持的每个体系结构都是不同的。 有关要映射到每个系统调用的系统调用号码的详细信息,请参阅特定于体系结构的文档。