加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

在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?),但这可能不再是真的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读