INT 0X80 和 SYSCALL 的区别
逆向工程
x86
系统调用
2021-06-26 10:18:41
1个回答
简短的回答是它的syscall
开销比int 0x80
.
有关原因的更多详细信息,请参阅Intel x86 vs x64 system call的已接受答案,其中提出了一个几乎相同的问题:
有人告诉我,系统调用比生成软件中断更轻巧、更快。为什么它在 x64 上比 x86 快,我可以使用 int 80h 在 x64 上进行系统调用吗?
也可以看看:
- 英特尔 P6 与 P7 系统调用性能
- 此电子邮件线程讨论了由与
int 0x80
- 此电子邮件线程讨论了由与
-
发现这种软件中断方法 [int 0x80] 在 Pentium IV 处理器上要慢得多。为了解决这个问题,Linus 实现了一种替代系统调用机制,以利用所有 Pentium II+ 处理器提供的 SYSENTER/SYSEXIT 指令。
Linux 内核、4.6 Sysenter 和 vsyscall 页面(2003 年)
已经观察到,在某些任务上,2 GHz Pentium 4 比 850 MHz Pentium III 慢得多,这种缓慢是由
int 0x80
Pentium 4 上传统中断的非常大的开销造成的。 i386 系列的某些型号确实如此有更快的方法进入内核。在 Pentium II 上有sysenter
说明。AMD 也有syscall
说明。
其它你可能感兴趣的问题