程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了在Linux上的32位代码中,哪个更好的“ int 0x80”或“ syscall”更好?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决在Linux上的32位代码中,哪个更好的“ int 0x80”或“ syscall”更好??

开发过程中遇到在Linux上的32位代码中,哪个更好的“ int 0x80”或“ syscall”更好?的问题如何解决?下面主要结合日常开发的经验,给出你关于在Linux上的32位代码中,哪个更好的“ int 0x80”或“ syscall”更好?的解决方法建议,希望对你解决在Linux上的32位代码中,哪个更好的“ int 0x80”或“ syscall”更好?有所启发或帮助;
  • syscall是在上进入内核模式的默认方法x86-64。该指令 在Intel处理器的 32位操作模式下不可用。
  • sysenter是最常用于以32位操作模式调用系统调用的指令。它类似于syscall,但是使用起来有点困难,但这是内核的关注点。
  • int 0x80 是调用系统调用的传统方式,应避免使用。

调用系统调用的首选方法是使用VDSO,VDSO是映射在每个进程地址空间中的一部分内存,可以更有效地使用系统调用(例如,在某些情况下完全不进入内核模式)。与传统int 0x80方式相比,VDSO还要处理更困难的事情syscallsysenter指令。

另外,请参阅此和本。

解决方法

我研究了Linux内核,发现对于x86_64体系结构,中断int 0x80不适用于调用系统调用1。

对于i386体系结构(32位x86用户空间),更可取的是:syscall或者int 0x80为什么?

我使用Linux内核版本3.4。

@H_262_50@

脚注1:int 0x80在某些情况下确实可以在64位代码中工作,但是从不建议这样做。

大佬总结

以上是大佬教程为你收集整理的在Linux上的32位代码中,哪个更好的“ int 0x80”或“ syscall”更好?全部内容,希望文章能够帮你解决在Linux上的32位代码中,哪个更好的“ int 0x80”或“ syscall”更好?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。