ABI

In computer software, an application binary interface (ABI) is an interface between two program modules; often, one of these modules is a library or operating system facility, and the other is a program that is being run by a user.

计算机软件领域,ABI是两个程序模块的接口。这种接口通常一端连接系统底层,另一端连接应用程序。

An ABI defines how data structures or computational routines are accessed in machine code, which is a low-level, hardware-dependent format; in contrast, an API defines this access in source code, which is a relatively high-level, relatively hardware-independent, often human-readable format. A common aspect of an ABI is the calling convention, which determines how data is provided as input to or read as output from computational routines; examples are the x86 calling conventions.

ABI规定了外部如何通过机器码访问数据结构和应用程序。这种访问是基于硬件底层的。相对应的是,API是源码级别的,属于高层的,相对来说硬件无关的,更容易被人们理解的形式。ABI一个常见的表现形式是调用约定。调用约定规定了如何从程序输入和输出数据。

Adhering to an ABI (which may or may not be officially standardized) is usually the job of a compiler, operating system, or library author; however, an application programmer may have to deal with an ABI directly when writing a program in a mix of programming languages, which can be achieved by using foreign function calls.

维护(Adhering to)稳定的ABI(这可能并非标准要求)是编译器、操作系统、程序库等的作者的工作。但是,应用程序开发者一般并不需要直接面对ABI,除非他们需要写一个多语言混编的程序,这个时候他们可以通过外部调用实现。

ABIs cover details such as:

ABI包括了以下场景:

  • a processor instruction set (with details like register file structure, stack organization, memory access types, ...)

  • 处理器指令集,包括寄存器结构,堆栈组织,内存访问类型等。

  • the sizes, layouts, and alignments of basic data types that the processor can directly access

  • 处理器可以直接访问的基本数据类型的大小、布局、对齐方式

  • the calling convention, which controls how functions' arguments are passed and return values are retrieved; for example, whether all parameters are passed on the stack or some are passed in registers, which registers are used for which function parameters, and whether the first function parameter passed on the stack is pushed first or last onto the stack

  • 调用约定控制了函数实参的传递和返回值的取得。比如,是否所有形参都通过堆栈传递,抑或是部分通过寄存器传递?不同寄存器分别存储那些形参?第一个使用堆栈传递的函数形参首先压栈还是最后压栈?

  • how an application should make system calls to the operating system and, if the ABI specifies direct system calls rather than procedure calls to system call stubs, the system call numbers

  • 应用程序该如何向操作系统发起系统调用?是直接调还是通过进程间接口调用,又或者是使用系统调用号?

  • and in the case of a complete operating system ABI, the binary format of object files, program libraries and so on.

  • 对于完整的操作系统ABI,还包括了.o 文件、应用程序可执行文件等的二进制内部格式。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,753评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,668评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,090评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,010评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,054评论 6 395
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,806评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,484评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,380评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,873评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,021评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,158评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,838评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,499评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,044评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,159评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,449评论 3 374
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,136评论 2 356

推荐阅读更多精彩内容

  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi阅读 7,338评论 0 10
  • 18年一下子都过了一个月了,真快啊时间,马上就过年了又~ 本来以为今天能早点回的,结果临时版本出问题,...
    丶Saikaka阅读 123评论 0 1
  • 人生在这个社会中,就会受到很多关注。关注有陌生的有熟悉的,有主动的有被动的,有善意的有恶意的,有深度的有浅...
    许生说阅读 595评论 0 0
  • 在存在信号控制的灯具连接上,开关电源要严格分离,否则信号无法通过
    浅浅君子阅读 149评论 0 0