http://baike.baidu.com/link?url=ybErtZo0zAB5_P-kKZmT_nd9FdxaAAPqW4jqtwN5Tmu_q8weayOOFOJBrXw1RLbR20sK66pi0OOX6wNyASNjXa

ABI涵盖了各种细节,如:
  • 数据类型的大小、布局和对齐;
  • 调用约定(控制着函数的参数如何传送以及如何接受返回值),例如,是所有的参数都通过栈传递,还是部分参数通过寄存器传递;哪个寄存器用于哪个函数参数;通过栈传递的第一个函数参数是最先push到栈上还是最后;
  • 系统调用的编码和一个应用如何向操作系统进行系统调用;
  • 以及在一个完整的操作系统ABI中,目标文件的二进制格式、程序库等等。[1] 
ABI不同于API ,API定义了源代码和库之间的接口,因此同样的代码可以在支持这个API的任何系统中编译 ,然而ABI允许编译好的目标代码在使用兼容ABI的系统中无需改动就能运行。 ABI掩盖了各种细节,例如:调用约定控制着函数的参数如何传送以及如何接受返回值;系统调用的编码和一个应用如何向操作系统进行系统调用;以及在一个完整的操作系统ABI中,对象文件的二进制格式、程序库等等。一个完整的ABI,像 Intel二进制兼容标准 (iBCS) ,允许支持它的操作系统上的程序不经修改在其他支持此ABI的操作系统上运行。其他的 ABI 标准化细节包括C++ name decoration和同一个平台上的编译器之间的调用约定,但是不包括跨平台的兼容性。在Unix的操作系统中,存在很多运行在同一件平台上互相相关但是不兼容的操作系统(尤其是80386兼容系统)。有一些努力尝试标准化A I,以减少销售商将程序移植到其他系统时所需的工作。然而,直到现在还没有很成功的例子,虽然LSB正在为Linux做这方面的努力。
它描述了应用程序与OS之间的底层接口。ABI涉及了程序的各个方面,比如:目标文件格式、数据类型、数据对齐、函数调用约定以及函数如何传递参数、如何返回值、系统调用号、如何实现系统调用等。
一套完整的ABI(比如:Intel Binary Compatibility Standard (iBCS)),可以让程序在所有支持该ABI的系统上运行,而无需对程序进行修改。

嵌入式应用二进制接口

编辑

嵌入式应用二进制接口 EABI: embedded application binary interface指定了文件格式、数据类型、寄存器使用、堆积组织优化和在一个嵌入式软件中的参数的标准约定。开发者使用自己的汇编语言也可以使用EABI作为与兼容的编译器生成的汇编语言的接口。 支持EABI的编译器创建的目标文件可以和使用类似编译器产生的代码兼容,这样允许开发者链接一个由不同编译器产生的库。EABI与关于通用计算机的ABI的主要区别是应用程序代码中允许使用特权指令,不需要动态链接(有时是禁止的),和更紧凑的堆栈帧组织用来节省内存。 广泛使用EABI的有Power PC和ARM。

ABI (应用程序二进制接口)相关推荐

  1. ABI 与 API 的区别(应用程序二进制接口、应用程序编程接口)

    文章目录 1.ABI 简介 2.API 简介 3.ABI 与 API 的区别 1.ABI 简介 C++ 可执行文件是由编译器将源代码编译成目标文件后链接生成的,那么如果目标文件由不同的编译器编译生成, ...

  2. PowerPC构架应用程序二进制接口(ABI)及堆栈帧详解

    第一部分 概述 应用程序二进制接口(ABI-Application Binary Interface)定义了一组在PowerPC系统软件上编译应用程序所需要遵循的一套规则.主要包括基本数据类型,通用寄 ...

  3. 【软件开发底层知识修炼】二十六 ABI-应用程序二进制接口 学习总结文章目录

    前面学习了ABI的知识,感觉受益良多.对底层与编译器有更加深刻的认识,为此这里将前面写过的关于ABI 的文章给列出来,方便学习与翻阅. [软件开发底层知识修炼]二十一 ABI-应用程序二进制接口一 [ ...

  4. 【软件开发底层知识修炼】二十三 ABI-应用程序二进制接口三之深入理解函数栈帧的形成与摧毁

    上两篇文章我们初步接触了ABI-应用程序二进制接口的概念,点击链接查看上一篇文章:[软件开发底层知识修炼]二十二 ABI-应用程序二进制接口 二.了解了为什么会有ABI的存在.本篇文章继续学习ABI ...

  5. 【软件开发底层知识修炼】二十二 ABI-应用程序二进制接口 二

    上一篇文章学习了ABI的相关内容,具体最后分析了不同ABI下结构体的对齐方式的不同.点击链接查看上一篇文章:[软件开发底层知识修炼]二十一 ABI-应用程序二进制接口一 本篇文章继续学习ABI相关内容 ...

  6. ELF应用程序二进制接口

    ELF应用程序二进制接口 荣涛 2021年11月2日 文档修改日志 日期 修改内容 修改人 备注 2021年11月2日 创建 荣涛 摘自https://docs.oracle.com/ 2021年11 ...

  7. 开发PowerPC嵌入式应用二进制接口(EABI)应该遵循的原则

    P.S:个人翻译,仅作参考,如有疏漏,欢迎各位友好交流并恳请各位提出指正. PowerPC嵌入式处理器应用笔记 开发PowerPC嵌入式应用二进制接口(EABI)应该遵循的原则 摘要-这份应用笔记描述 ...

  8. API(Application Programming Interface,应用程序编程接口)

    API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码 ...

  9. java api接口报500_应用程序编程接口API,我们来聊一聊这个熟悉的名词

    API,全称叫做Application Programming interface,也就是应用程序接口,API是一些预先定义的函数,我是学Java的,当我要使用这些函数的时候,便可以直接调用Java ...

最新文章

  1. java 保护类型_Java 类的受保护访问(学习 Java 编程语言 046)
  2. python短信接口_短信接口DEMO-PYTHON
  3. hive指定hadoop执行队列
  4. 计算机常用文献管理工具,工具丨5款常用的文献管理软件
  5. 运行Android项目时,报Installation failed due to invalid APK file!错误的解决办法
  6. python 余弦值_余弦相似度
  7. 怎么格式化云服务器,云服务器磁盘怎么格式化
  8. 马士兵—JVM—内存溢出—2.arthas阿里线上Java诊断工具
  9. SCCM规划 - 网络
  10. coreldraw x4怎么写字_CorelDRAW实例:给文字排版的几个小技巧(4)
  11. 您电脑上可能没有安装JRE插件或者该插件已被浏览器拦截,如果您确认没有安装JRE插件,请单击“确定“,页面将跳转到插件下载地址
  12. DBTC——流动性、使用人数自我驱动增长的分叉币
  13. 组合框里添加复选框的方法
  14. 【软件与系统安全笔记】一、引入
  15. 计算机工程毕业论文任务书,计算机工程毕业设计论文任务书开题报告模板.doc...
  16. NetCore版本 考勤门禁解决方案,支持中控系列最新BioFace/XFace,海康DS-K1T671人脸识别+测温
  17. 合泰单片机市场占有率_现在市场上有哪些单片机很火的?
  18. 【教程汇总】谷歌SEO工具
  19. OGC标准介绍 11
  20. 基于51单片机的智能宠物喂食系统

热门文章

  1. PHP与前端协作模式的理解
  2. 韩顺平mysql优化笔记_韩顺平 mysql优化笔记.doc
  3. Javascript找出所有没有重复的字符(优化)
  4. 安徽工程大学大学计算机基础,安徽工程大学.pdf
  5. I²C那点事儿(一)
  6. 20210601:力扣第243周周赛(上)
  7. VB 一个API方式存取日志文件的模块
  8. 网页中怎样制作虚线表格
  9. VB6的后期绑定和前期绑定
  10. 牙龈细菌会进入大脑,引发阿尔茨海默病 | 《科学》子刊最新研究