gpt4 book ai didi

c - 应用程序二进制接口(interface)困惑

转载 作者:太空宇宙 更新时间:2023-11-04 03:38:33 26 4
gpt4 key购买 nike

我知道这里有很多关于 ABI 的问题,但我仍然没有完全理解它。

最近有人告诉我,当人们过去编写 Pascal 然后 C 变得更流行时,会出现问题或混淆,因为编译时 Pascal 会以与 C 相反的顺序将函数参数压入堆栈。我质疑那不应该取决于目标平台而不是程序语言。确定这一点的不是 ABI 吗? ABI 不是由操作系统开发人员开发的,不依赖于编程语言吗?

抱歉,如果问题很长。这只是我无法理解的事情。我试图完全理解幕后发生的事情,而不仅仅是能够编写代码。在此先感谢您的帮助。

最佳答案

ABI 不是操作系统供应商的垄断。程序可以作为固件部署,甚至操作系统也是程序的集合。因此,正如您所建议的那样,调用约定可以被视为 ABI 规范的一部分,由 HLL 的编译工具链供应商(或汇编语言的程序员)选择。对于通过操作系统使用的计算机,开发应用程序的开发人员需要将他们的程序与操作系统库链接。如果这些库在作为操作系统的一部分部署时是使用一种调用约定构建的,那么编译器开关或其他此类机制会负责针对操作系统。因此,操作系统供应商在指定 ABI 方面有发言权。

关于c - 应用程序二进制接口(interface)困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30358914/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com