博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ABI(Application Binary Interface)
阅读量:6171 次
发布时间:2019-06-21

本文共 1544 字,大约阅读时间需要 5 分钟。

拷贝自维基百科,参考百度百科

==》调用栈结构与系统相关。

 

在计算机中,应用二进制接口英语:application binary interface,缩写为 ABI)描述了应用程序(或者其他类型)和之间或其他应用程序的低级接口。

目录

描述

ABI涵盖了各种细节,如:

  • 数据类型的大小、布局和对齐;
  • (控制着函数的参数如何传送以及如何接受返回值),例如,是所有的参数都通过栈传递,还是部分参数通过寄存器传递;哪个寄存器用于哪个函数参数;通过栈传递的第一个函数参数是最先push到栈上还是最后;
  • 的编码和一个应用如何向操作系统进行系统调用;
  • 以及在一个完整的操作系统ABI中,的二进制格式、程序库等等。

一个完整的ABI,像(iBCS),允许支持它的操作系统上的程序不经修改在其他支持此ABI的操作系统上运行。

其他的ABI标准化了一些细节,包括 ,和同一个平台上的编译器之间的调用约定,但是不包括跨平台的兼容性。

ABI不同于(API),API定义了和库之间的接口,因此同样的代码可以在支持这个API的任何系统中,然而ABI允许编译好的在使用兼容ABI的系统中无需改动就能运行。(ABI掩盖了各种细节,例如:调用约定控制着函数的参数如何传送以及如何接受返回值;的编码和一个应用如何向操作系统进行系统调用;以及在一个完整的操作系统ABI中,对象文件的二进制格式、等等)。 在的操作系统中,存在很多运行在同一硬件平台上互相相关但是不兼容的操作系统(尤其是兼容系统)。有一些努力尝试标准化ABI,以减少销售商将程序移植到其他系统时所需的工作。然而,直到现在还没有很成功的例子,虽然正在为做这方面的努力。

EABI

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

参见

  • - API

参考资料

  • (compatible with multiple architectures)
  • (compatible with multiple architectures)
  • EABI Summary. (PDF) Version 1.0. Freescale Semiconductor, Inc. 1995-10-01: 28–30.
  • . Linuxdevices.com. 2007-01-19 [2007-10-11]. (存档于2012-07-14).
  1. Andrés Calderón and Nelson Castillo. . Linuxdevices.com. 2007-03-14 [2007-10-11]. (存档于2012-07-14).

外部链接

  • - Good compendium of development rules of thumb (with ) for not breaking binary compatibility between releases of your library.
  • - Good summary and comparison about some popular ABIs
  • for the Freescale processors

转载于:https://www.cnblogs.com/justinh/p/7159318.html

你可能感兴趣的文章
1 虚拟化介绍
查看>>
Shc可以用来对shell脚本进行加密
查看>>
负载均衡之DNS域名解析,实现一个域名对应多个IP地址
查看>>
CentOS7 修改网卡名称
查看>>
WINDOWS 10 PRO专业版ESD镜像官方下载地址
查看>>
cocoaPods第三方库使用详解
查看>>
9.SQL注入
查看>>
linux 文件,目录权限详解
查看>>
我的友情链接
查看>>
history命令使用技巧
查看>>
php gd库没有安装问题确认
查看>>
JS代码收集资料
查看>>
linux系统运维面试题
查看>>
split命令使用范例
查看>>
oracle commit提交到底作了什么
查看>>
Linux文件元数据介绍
查看>>
sql学习笔记
查看>>
服务器存储分类
查看>>
监控mysql
查看>>
oracle排序要注意的点
查看>>