ABI (应用程序二进制接口)
2023-09-11 14:18:46 时间
http://baike.baidu.com/link?url=ybErtZo0zAB5_P-kKZmT_nd9FdxaAAPqW4jqtwN5Tmu_q8weayOOFOJBrXw1RLbR20sK66pi0OOX6wNyASNjXa
ABI涵盖了各种细节,如:
-
数据类型的大小、布局和对齐;
-
调用约定(控制着函数的参数如何传送以及如何接受返回值),例如,是所有的参数都通过栈传递,还是部分参数通过寄存器传递;哪个寄存器用于哪个函数参数;通过栈传递的第一个函数参数是最先push到栈上还是最后;
-
系统调用的编码和一个应用如何向操作系统进行系统调用;
ABI不同于API ,API定义了源代码和库之间的接口,因此同样的代码可以在支持这个API的任何系统中编译 ,然而ABI允许编译好的目标代码在使用兼容ABI的系统中无需改动就能运行。 ABI掩盖了各种细节,例如:调用约定控制着函数的参数如何传送以及如何接受返回值;系统调用的编码和一个应用如何向操作系统进行系统调用;以及在一个完整的操作系统ABI中,对象文件的二进制格式、程序库等等。一个完整的ABI,像 Intel二进制兼容标准 (iBCS) ,允许支持它的操作系统上的程序不经修改在其他支持此ABI的操作系统上运行。其他的 ABI 标准化细节包括C++ name decoration和同一个平台上的编译器之间的调用约定,但是不包括跨平台的兼容性。在Unix的操作系统中,存在很多运行在同一件平台上互相相关但是不兼容的操作系统(尤其是80386兼容系统)。有一些努力尝试标准化A I,以减少销售商将程序移植到其他系统时所需的工作。然而,直到现在还没有很成功的例子,虽然LSB正在为Linux做这方面的努力。
一套完整的ABI(比如:Intel Binary Compatibility Standard (iBCS)),可以让程序在所有支持该ABI的系统上运行,而无需对程序进行修改。
相关文章
- VREP中的力触觉设备接口(CHAI3D)
- iOS开发之SQLite--C语言接口规范(四) —— Result Values From A Query
- 最稳定万能vip视频解析接口 支持HTTPS
- django-vue-admin前端设置后台接口地址为127.0.0.1产生跨域问题解决办法
- Web防火墙应用场景:短信接口防刷
- [Py] Python 接口数据用 pandas 高效写入 csv
- Atitit.远程接口 监控与木马 常用的api 标准化v2 q216
- 如何实时主动监控你的网站接口是否挂掉并及时报警
- 设备和面向类的函数 基本的终端接口 termios termios 机构 取得前台进程组的 ID 设置前台进程组 ID 行控制函数 获得并设定状态 接口特性 波特率函数 基本的终端接口控制函数
- nodejs返回接口给前端
- Linux系统调用及用户编程接口(API)
- 玩转华为ENSP模拟器系列 | 配置接口发送OSPF Hello报文的时间间隔
- 做接口测试的流程一般是怎么样的?阿里P7详谈
- 【保姆级教程】手把手教你打造一个可视化接口自动化测试系统
- RESTful API接口设计标准及规范
- 【Java】多态、抽象类和接口