在Linux中x86_64是syscalls和int 0x80有关吗?
发布时间:2020-12-14 00:35:10 所属栏目:Linux 来源:网络整理
导读:我知道在 Linux x64中“syscall”和“int 0x80”汇编程序指令在软件中生成一个中断,要求内核做一些工作.它们有不同的操作码(0F 05 vs CD 80),前者更快. 我不清楚他们之间是否有任何关系:他们真的是独立的吗? (即:“syscall”调用“int 0x80”?) 谢谢. 解
我知道在
Linux x64中“syscall”和“int 0x80”汇编程序指令在软件中生成一个中断,要求内核做一些工作.它们有不同的操作码(0F 05 vs CD 80),前者更快.
我不清楚他们之间是否有任何关系:他们真的是独立的吗? (即:“syscall”调用“int 0x80”?) 谢谢. 解决方法
系统调用(x86-64)和sysenter(x86-32)指令更新更快,因此在可用时使用;但保留int 0x80机制以与旧二进制文件兼容.没有语义差异 – 无论使用哪条指令将控制转移到内核中,系统调用编号都是相同的,我认为参数也都在同一个地方.
我有一个昏暗的回忆,有少量的系统调用,只能使用int 0x80,因为他们不寻常的堆栈相关行为(克隆?execve?sigreturn?),但这可能不再是真的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |