fbpx
维基百科

应用二进制接口

在軟體開發中,应用二进制接口(英語:application binary interface,縮寫為ABI)是指兩程式模組間的接口;通常其中一個程式模組會是函式庫或作業系統所提供的服務,而另一邊的模組則是使用者所執行的程式。

一個ABI定義了機器碼如何存取資料結構與運算程序,此處所定義的界面相當低階並且相依於硬體。而類似概念的API則在原始碼定義這些,則較為高階,並不直接相依於硬體,通常會是人類可閱讀的程式碼。一個ABI常見的樣貌即是調用約定:資料怎麼成為計算程序的輸入或者從中得到輸出;x86的調用約定即是一個ABI的例子。

決定要不要採取既定的ABI(不論是否由官方提供),通常由編譯器,作業系統或函式庫的開發者來決定;然而,如果撰寫一個混和多個程式語言的應用程式,就必須直接處理ABI,採用外部函式呼叫英语Foreign function interface來達成此目的。

描述 编辑

ABI涵盖了各种细节,如:

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

一个完整的ABI,像Intel二进制兼容标准英语Intel Binary Compatibility Standard(iBCS)[1],允许支持它的操作系统上的程序不经修改在其他支持此ABI的操作系统上运行。

其他的ABI标准化了一些细节,包括C++名字修饰[2] ,和同一个平台上的编译器之间的调用约定[3],但是不包括跨平台的兼容性。

ABI不同于应用程序接口(API),API定义了源代码和库之间的接口,因此同样的代码可以在支持这个API的任何系统中编译,然而ABI允许编译好的目标代码在使用兼容ABI的系统中无需改动就能运行。 在Unix风格的操作系统中,存在很多运行在同一硬件平台上互相相关但是不兼容的操作系统(尤其是Intel 80386兼容系统)。有一些努力尝试标准化ABI,以减少销售商将程序移植到其他系统时所需的工作。然而,直到现在还没有很成功的例子,虽然Linux标准化工作组正在为Linux做这方面的努力。

EABI 编辑

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

参见 编辑

参考资料 编辑

  1. ^ Intel Binary Compatibility Standard (iBCS). [2011-01-19]. (原始内容于2012-05-27). 
  2. ^ Itanium C++ ABI 互联网档案馆的,存档日期2008-11-19. (compatible with multiple architectures)
  3. ^ Itanium C++ ABI: Exception Handling 互联网档案馆的,存档日期2008-05-11. (compatible with multiple architectures)
  4. ^ EABI Summary. PowerPC Embedded Application Binary Interface: 32-Bit Implementation (PDF) Version 1.0. Freescale Semiconductor, Inc. 1995-10-01: 28–30 [2011-01-19]. (原始内容 (PDF)于2012-03-16). 
  5. ^ "PowerPC Embedded Processors Application Note"[永久失效連結]
  6. ^ Debian ARM accelerates via EABI port. Linuxdevices.com. 2007-01-19 [2007-10-11]. (原始内容存档于2012-07-14). 
  7. ^ Andrés Calderón and Nelson Castillo. Why ARM's EABI matters. Linuxdevices.com. 2007-03-14 [2007-10-11]. (原始内容存档于2012-07-14). 

外部链接 编辑

  • KDE Techbase Policies (页面存档备份,存于互联网档案馆) - Good compendium of development rules of thumb (with some examples (页面存档备份,存于互联网档案馆)) for not breaking binary compatibility between releases of your library.
  • Mac OS X ABI Function Call Guide (页面存档备份,存于互联网档案馆
  • Debian ARM EABI port (页面存档备份,存于互联网档案馆
  • µClib: Motorola 8/16-bit embedded ABI (页面存档备份,存于互联网档案馆
  • Application Binary Interface (ABI) for the ARM Architecture (页面存档备份,存于互联网档案馆
  • Sun Studio 10 Compilers and the AMD64 ABI (页面存档备份,存于互联网档案馆) - Good summary and comparison about some popular ABIs
  • "M·CORE Applications Binary Interface Standards Manual" (页面存档备份,存于互联网档案馆) for the Freescale M·CORE processors

应用二进制接口, 在軟體開發中, 英語, application, binary, interface, 縮寫為abi, 是指兩程式模組間的接口, 通常其中一個程式模組會是函式庫或作業系統所提供的服務, 而另一邊的模組則是使用者所執行的程式, 一個abi定義了機器碼如何存取資料結構與運算程序, 此處所定義的界面相當低階並且相依於硬體, 而類似概念的api則在原始碼定義這些, 則較為高階, 並不直接相依於硬體, 通常會是人類可閱讀的程式碼, 一個abi常見的樣貌即是調用約定, 資料怎麼成為計算程序的輸入或者從中得到輸. 在軟體開發中 应用二进制接口 英語 application binary interface 縮寫為ABI 是指兩程式模組間的接口 通常其中一個程式模組會是函式庫或作業系統所提供的服務 而另一邊的模組則是使用者所執行的程式 一個ABI定義了機器碼如何存取資料結構與運算程序 此處所定義的界面相當低階並且相依於硬體 而類似概念的API則在原始碼定義這些 則較為高階 並不直接相依於硬體 通常會是人類可閱讀的程式碼 一個ABI常見的樣貌即是調用約定 資料怎麼成為計算程序的輸入或者從中得到輸出 x86的調用約定即是一個ABI的例子 決定要不要採取既定的ABI 不論是否由官方提供 通常由編譯器 作業系統或函式庫的開發者來決定 然而 如果撰寫一個混和多個程式語言的應用程式 就必須直接處理ABI 採用外部函式呼叫 英语 Foreign function interface 來達成此目的 目录 1 描述 2 EABI 3 参见 4 参考资料 5 外部链接描述 编辑ABI涵盖了各种细节 如 数据类型的大小 布局和对齐 调用约定 控制着函数的参数如何传送以及如何接受返回值 例如 是所有的参数都通过栈传递 还是部分参数通过寄存器传递 哪个寄存器用于哪个函数参数 通过栈传递的第一个函数参数是最先push到栈上还是最后 系统调用的编码和一个应用如何向操作系统进行系统调用 以及在一个完整的操作系统ABI中 目标文件的二进制格式 程序库等等 一个完整的ABI 像Intel二进制兼容标准 英语 Intel Binary Compatibility Standard iBCS 1 允许支持它的操作系统上的程序不经修改在其他支持此ABI的操作系统上运行 其他的ABI标准化了一些细节 包括C 名字修饰 2 和同一个平台上的编译器之间的调用约定 3 但是不包括跨平台的兼容性 ABI不同于应用程序接口 API API定义了源代码和库之间的接口 因此同样的代码可以在支持这个API的任何系统中编译 然而ABI允许编译好的目标代码在使用兼容ABI的系统中无需改动就能运行 在Unix风格的操作系统中 存在很多运行在同一硬件平台上互相相关但是不兼容的操作系统 尤其是Intel 80386兼容系统 有一些努力尝试标准化ABI 以减少销售商将程序移植到其他系统时所需的工作 然而 直到现在还没有很成功的例子 虽然Linux标准化工作组正在为Linux做这方面的努力 EABI 编辑嵌入式应用二进制接口指定了文件格式 数据类型 寄存器使用 堆积组织优化和在一个嵌入式软件中的参数的标准约定 开发者使用自己的汇编语言也可以使用EABI作为与兼容的编译器生成的汇编语言的接口 支持EABI的编译器创建的目标文件可以和使用类似编译器产生的代码兼容 这样允许开发者链接一个由不同编译器产生的库 EABI与关于通用计算机的ABI的主要区别是应用程序代码中允许使用特权指令 不需要动态链接 有时是禁止的 和更紧凑的堆栈帧组织用来节省内存 4 广泛使用EABI的有Power PC 5 和ARM 6 7 参见 编辑Application programming interface API程序设计 系统调用参考资料 编辑 Intel Binary Compatibility Standard iBCS 2011 01 19 原始内容存档于2012 05 27 Itanium C ABI 互联网档案馆的存檔 存档日期2008 11 19 compatible with multiple architectures Itanium C ABI Exception Handling 互联网档案馆的存檔 存档日期2008 05 11 compatible with multiple architectures EABI Summary PowerPC Embedded Application Binary Interface 32 Bit Implementation PDF Version 1 0 Freescale Semiconductor Inc 1995 10 01 28 30 2011 01 19 原始内容存档 PDF 于2012 03 16 PowerPC Embedded Processors Application Note 永久失效連結 Debian ARM accelerates via EABI port Linuxdevices com 2007 01 19 2007 10 11 原始内容存档于2012 07 14 Andres Calderon and Nelson Castillo Why ARM s EABI matters Linuxdevices com 2007 03 14 2007 10 11 原始内容存档于2012 07 14 外部链接 编辑KDE Techbase Policies 页面存档备份 存于互联网档案馆 Good compendium of development rules of thumb with some examples 页面存档备份 存于互联网档案馆 for not breaking binary compatibility between releases of your library Mac OS X ABI Function Call Guide 页面存档备份 存于互联网档案馆 Debian ARM EABI port 页面存档备份 存于互联网档案馆 µClib Motorola 8 16 bit embedded ABI 页面存档备份 存于互联网档案馆 AMD64 x86 64 Application Binary Interface Application Binary Interface ABI for the ARM Architecture 页面存档备份 存于互联网档案馆 MIPS EABI documentation Sun Studio 10 Compilers and the AMD64 ABI 页面存档备份 存于互联网档案馆 Good summary and comparison about some popular ABIs M CORE Applications Binary Interface Standards Manual 页面存档备份 存于互联网档案馆 for the Freescale M CORE processors 取自 https zh wikipedia org w index php title 应用二进制接口 amp oldid 78984476, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。