ABI(application binary interface),指的时应用程序二进制接口。
EABI(embeded application binary interface),指的是嵌入式应用程序二进制接口,和ABI的区别在于应用程序中允许使用特权指令。
ABI广义上的概率指的是应用程序在二进制层面的规范,狭义上指的是某个硬件/操作系统/虚拟机平台的规范文档。
创新互联建站专业为企业提供东坡网站建设、东坡做网站、东坡网站设计、东坡网站制作等企业网站建设、网页设计与制作、东坡企业网站模板建站服务,10余年东坡做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
ABI是二进制层面的规范,而API是源码层面的规范。两者没有直接联系。
遵循相同ABI的系统,所提供的API可能不同:
相同的不同的系统如Windows和Linux都可以在电脑上安装,原因是遵循了相同的ABI规范,但是源代码是不同的,原因API不同。
遵循相同API的系统,所提供的ABI可能不同:
QT应用程序开发后(API相同,源代码),可以在Windows和Linux上运行,单经过编译后的可执行文件不同(编译时遵循的ABI不同)
Java跨平台原理:
编译之后的二进制文件相同,通过运行在不同平台上java虚拟机将其翻译成对应平台的可执行程序(翻译的规则是平台的ABI规范)。
QT跨平台的原理:
相同的源代码(api),,通过在不同品台编译后成为各个品台的可执行程序(编译规范遵守了平台的ABI规范)。
从这个角度考虑程序的可移植性,只需要将类型适配层做相应修改,使得数据类型满足平台规范即可。
如下面的程序,有两种对其方式,在Linux中使用的是压缩存储。
struct {
short s : 9;
int j : 9;
char c;
short t : 9;
short u : 9;
char d;
} s;
Linux下输出结果:
寄存器时处理器用来处理数据的载体,一些寄存器在处理器设计时就规定好了功能。
X86寄存器的ABI规范:
Power PC寄存器的ABI规范
当函数调用时,参数会被传递给被调用的函数,而返回值会被返回给函数调用者。
调用约定描述参数如何传递到栈中以及栈的维护方式:参数的传递顺序(如从左向右入栈)、调用栈的清理(如被调函数负责清理栈)。
调用约定通常用于调用和库开发:
文章标题:缔造程序兼容的契约(ABI)
文章出自:https://www.cdcxhl.com/article22/jgsccc.html
成都网站建设公司_创新互联,为您提供网站改版、建站公司、自适应网站、动态网站、标签优化、面包屑导航
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联