为什么Linux不遵循Unix系统调用约定?

为什么Linux不遵循Unix系统调用约定?,第1张

概述我正在自学 Linux汇编语言,我遇到了BSD和Linux之间的一个有趣的区别.在Unix中,在调用80h中断之前将syscall参数压入堆栈;相反,在Linux中,您将参数传递给寄存器. 有谁知道Linux开发人员使用寄存器而不是堆栈的理由是什么? 注意:这是一个很好的页面,详细说明了这种差异:FreeBSD Developer’s Handbook:System Calls没有解释基本原理. 我正在自学 Linux汇编语言,我遇到了BSD和linux之间的一个有趣的区别.在Unix中,在调用80h中断之前将syscall参数压入堆栈;相反,在linux中,您将参数传递给寄存器.

有谁知道linux开发人员使用寄存器而不是堆栈的理由是什么?

注意:这是一个很好的页面,详细说明了这种差异:FreeBSD Developer’s Handbook:System Calls没有解释基本原理.

解决方法 系统调用约定是不同的,因为标准函数调用序列是不同的.我假设您正在讨论x86-32调用约定和AMD64调用约定之间的区别.你可以查看AMD64 ABI here.

但如果你想快点检查this帖子.基本上它是关于速度.通过更改调用约定并使用寄存器而不是堆栈,您可以在序言和调用的结尾中删除指令.

总结

以上是内存溢出为你收集整理的为什么Linux不遵循Unix系统调用约定?全部内容,希望文章能够帮你解决为什么Linux不遵循Unix系统调用约定?所遇到的程序开发问题。

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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1032467.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存