30|ABI 与 API 究竟有什么区别?
于航
该思维导图由 AI 生成,仅供参考
你好,我是于航。
今天我们来聊另外一个老生常谈的话题:“ ABI 与 API 这两个概念究竟有什么区别?”
也许你之前也思考过这个问题。ABI 与 API 这两个英文缩写只差一个字符,因此它们对应的概念在很多线下讨论和博客文章中会被经常混用,甚至是乱用。当然,时不时地,这个问题也会成为人们在技术社交圈内的丰富谈资。这一讲,就以你熟悉的 C 语言体系为例,我们来一起看看 ABI 与 API 二者分别指代什么内容,有什么区别。
API
API 的全称为“应用程序编程接口(Application Programming Interface)”。从它的名字我们就能看出来,这一类接口的侧重点在于“编程”。因此,通过遵循 API 规范,我们可以在相应的编程语言代码中使用这些接口,以操作计算机系统来完成某项特定任务。而对 C 语言来说,那些由 C 标准库提供的,被定义在不同头文件中的函数原型,便是一种 API 的具体表现形式。
重要特征
API 具有的一个最重要特征,便是隐藏了其背后具体功能的内部实现细节,只公开对编码有意义的部分(如接口名称、可接收参数的个数与类型等)。通过保持这部分特征的一致性,API 提供者与调用者便可在相对隔离的环境下被独立维护。在这种情况下,这部分相对统一和稳定的特征也可被单独抽离出来,成为相应的 API 规范。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
ABI 和 API 是技术领域中常被混淆的概念。API(应用程序编程接口)侧重于编程,隐藏内部实现细节,使使用者可以独立维护和使用系统能力。而ABI(应用程序二进制接口)关注于机器指令层面的具体格式,规定了程序与操作系统、硬件平台之间的协作规则。本文通过C语言体系为例,详细解释了API和ABI的区别,并验证了不遵循ABI规则的程序是否能正常运行。API提供了功能同时隐藏实现细节,让使用者可以按照统一和稳定的方式使用系统能力;而ABI规定了程序与操作系统、硬件平台之间的协作规则,关注于机器指令层面的具体格式。文章通过清晰的例子和历史发展简史,帮助读者更好地理解了API和ABI的概念及其重要性。ABI规范通常包括函数调用规范、数据类型大小与对齐方式、进程初始化细节、对象文件基本结构、程序载入和动态链接的细节等内容。稳定的ABI对保障同一个程序在多个不同平台上的兼容性有着重要作用。C语言的特殊地位使得操作系统厂商选择使用它作为编写相应ABI规范的“基准语言”。文章通过深入解析API和ABI的区别,帮助读者更好地理解这两个概念之间的关系和重要性。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《深入 C 语言和程序运行原理》,新⼈⾸单¥59
《深入 C 语言和程序运行原理》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(2)
- 最新
- 精选
- YAPI:规定了螺丝和螺丝母的规格 ABI:规定了制作螺丝的材料和制作细节 😂
作者回复: 可以说是十分形象了!
2022-03-0714 - 连瑞龙原文中的汇编语言小伙伴们如果想实践,需要将 # 注释部分删掉或者改为 ; 注释。汇编不支持 # 注释。 ; main.asm extern sub global _start section .text _start: and rsp, 0xfffffffffffffff0 sub rsp, 1 mov esi, 2 ; the 1st param. mov edi, 1 ; the 2nd param. call sub mov edi, eax mov eax, 60 syscall2024-01-12归属地:北京
收起评论