ABI (应用程序二进制接口)

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。

时间: 2024-08-01 11:43:00

ABI (应用程序二进制接口)的相关文章

微信小程序API接口

微信小程序API接口 wx.request(OBJECT)   wx.request发起的是 HTTPS 请求. OBJECT参数说明: url->开发者服务器接口地址->String; data->请求的参数->Object.String; header->设置请求的 header , header 中不能设置 Referer->Object; method->默认为 GET,有效值:OPTIONS, GET, HEAD, POST, PUT, DELETE,

api (应用程序编程接口)

API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节. 原文:http://baike.baidu.com/link?url=Jk71oJNRj5OjUpr6Lf38NF74-EI85FtwXiyye6_Da_cD9-o_9w_TMOpuoFwPf-tIug26_GSMUEGZrUgfpbqN3K

API(应用程序编程接口)

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

小程序前端接口数据对接

这几天着手做一个商城小程序的答题系统,主要功能就是在线答题,提交答案,根据评分判定奖励,然后到 商城兑换奖券,我呢,负责写后台的接口,先来大概看一下吧: 可以看到,我这个提交答卷以供评分的接口,前台提供了答案,并且每题的答案要带上这题的id,当时也是出于接口 处理起来方便的目的,for循环的时候,直接根据id查询该题的答案并加以比较,算出得分. 然后小程序前端接口对接的时候,处理起来并没有想象中那样简单,毕竟小程序很多地方还没有摸透.但最终还是巧 妙地解决了问题. <view class="

Sysv init脚本+Systemd程序+二进制程序

SysV  init(串行启动低效)是Linux系统操作中不可缺少的程序之一.所谓的init进程,它是一个由内核启动的用户级进程.内核自行启动,并已初始化所有的设备驱动程序和数据结构等之后,就通过启动一个用户级程序init的方式,完成引导进程.经过调整适应了其它许多发行版,例如RedHat.Suse和CentOS. SysV init脚本(单独管理) 历史上,我们大部分人用过传统的SysV init 初始化脚本,它通常情况下在/etc/rc.d/init.d/文件夹下.这些脚本调用守护进程二进制

程序实践:接口与实现分离

我们将类定义和使用此类的客户代码分离,增强了软件的可复用性.而接口定义并标准化了人和系统等诸如此类事物彼此交互的方式.每个类定义包含了类的公有成员函数的完整定义及其私有数据成员声明.可是更好的软件工程是在类定义的外部定义成员函数,这样这些成员函数的实现细节对客户代码而言隐藏的,这种方式保证程序员不会写出依赖于类的实现细节的客户代码.否则,若类的实现更改,则客户代码将更可能"遭到损坏". GradeBook.h:使用函数原型定义类接口 // GradeBook.h GradeBook c

java程序支付宝接口付费功能的实现

以前做过c#应用程序支付宝api接口功能,现在转移到Java程序上,代码如何实现呢? 1.从你的网站提交到支付宝: /** * 将订单提交支付宝进行网上支付 */ public ActionForward submitAlipayUrl(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { String orderNo

微信小程序之----接口调用方式

最近开发了一个微信小程序版的任务管理系统,在向Java后台发送接口时遇到了一些问题,在这里做一个简单的总结. 官方接口 官方给出的接口叫做wx.request,请求方式比较简单,下面是官网给出的请求实例. wx.request({ url: 'test.php', //仅为示例,并非真实的接口地址 data: { x: '' , y: '' }, header: { 'content-type': 'application/json' }, success: function(res) { co

WordPress开发app(小程序)接口开发教程

引言 废话不多说这套系列的教程就是教你怎么将自己现有的WP网站做成一个app或者小程序 技术栈要求 需要声明的是,在这套教程之中,因为精力有限的关银戒原创系,我不负责任何前端页面的设计以及开发,只讲前端与WP交互的接口设计与开发.当然,我还是会尽可能的做出一个简单Demo用于展示与测试(为了通俗易懂这里使用 uni-app ). 而至于什么是接口开发如果有人不明白的可以去百度一下,这里就不详细说明了.但简单且通俗易懂的来说,其实接口就是客户端(app)与服务端交互的一个桥梁,你可以理解成是app