- Application binary interface
computer software, an application binary interface (ABI) describes the low-level interface between an application program and the operating system, or the interface between an application and its libraries, or that between component parts of an application. An ABI is similar to an application programming interface(API); however, the latter defines a source codeinterface. [allowing e.g. the same source code to compile on any system supporting that API] Simply put, ABIs enable binary compatibility, whereas APIs enable source code compatibility.
For example, the
POSIXstandard defines an API that allows a wide range of common computing functions to be written such that they may operate on many different systems ( Mac OS Xand various BSDs implement this interface); however, making use of this requires re-compilation for each platform. A compatible ABI, on the other hand, allows compiled object codeto function without any changes, on any system implementing that ABI. This is advantageous to both software providers (where they may distribute existing software on new systems without producing/distributing upgrades) and users (where they may install older software on their new systems without purchasing upgrades), although this generally requires various software libraries implementing the necessary APIs too.
ABIs cover details such as data type size and alignment, the
calling convention, which controls how functions' arguments are passed and return values retrieved; the system callnumbers and how an application should make system calls to the operating system; and in the case of a complete operating system ABI, the binary format of object files, program libraries and so on. A complete ABI, such as the IntelBinary Compatibility Standard (iBCS), [ [http://www.everything2.com/index.pl?node=iBCS Intel Binary Compatibility Standard (iBCS)] ] allows a program from one operating system supporting that ABI to run without modifications on any other such system.
Other ABIs standardize details such as the C++ name decoration, [ [http://www.codesourcery.com/cxx-abi/abi.html Itanium C++ ABI] (compatible with multiple architectures)] exception propagation, [ [http://www.codesourcery.com/cxx-abi/abi-eh.html Itanium C++ ABI: Exception Handling] (compatible with multiple architectures)] and calling convention between compilers on the same platform, but do not require cross-platform compatibility.
Microsofthas shown significant commitment to a backward compatible ABI, particularly within their Win32library, such that older applications may run on newer versions of Windows. Apple_Inc.has shown less propensity to this concern, expiring compatibility or implementing ABI in a slower "emulation mode"; this allows greater freedom in development at the cost of obsoleting older software. Among Unix-likeoperating systems, there are many related but incompatible operating systems running on a common hardware platform (particularly Intel 80386-compatible systems). There have been several attempts to standardise the ABI such that software vendors may distribute one binary application for all these systems; however to date, none of these have met with much success. The Linux Standard Baseis attempting to do this for the Linuxplatform whilst many of the BSD unices ( OpenBSD/ NetBSD/ FreeBSD) implement various levels of ABI compatibility for both backward compatibility (allowing applications written for older versions to run on newer distributions of the system) and cross-platform compatibility (allowing the execution of foreign code without recompilation).
Embedded Application Binary Interface
* [http://www.x86-64.org/documentation.html AMD64(x86_64) Application Binary Interface]
* [http://infocenter.arm.com/help/topic/com.arm.doc.ihi0036a/index.html Application Binary Interface (ABI) for the ARM Architecture]
* [http://www.cygwin.com/ml/binutils/2003-06/msg00436.html MIPS EABI documentation]
* [http://developers.sun.com/solaris/articles/about_amd64_abi.html Sun Studio 10 Compilers and the AMD64 ABI] Good summary and comparison about some popular ABIs
Wikimedia Foundation. 2010.
Look at other dictionaries:
Application binary interface — En informatique, une Application Binary Interface (ABI, interface binaire programme), décrit une interface bas niveau entre les applications et le système d exploitation, entre une application et une bibliothèque ou bien entre différentes parties … Wikipédia en Français
Application Binary Interface — Eine Binärschnittstelle definiert eine Schnittstelle auf Maschinenebene zwischen einem Programm und dem Betriebssystem, bzw. zwischen einem Programm und einer Bibliothek, oder auch zwischen verschiedenen Bestandteilen des Programms. Eine… … Deutsch Wikipedia
Application Binary Interface — Abbreviated ABI. A specification that aims to ensure binary compatibility between applications running on the same family of processors or CPUs using Unix System V Release 4. Applications developed using ABI can run on hardware from different… … Dictionary of networking
Embedded Application Binary Interface — An embedded application binary interface (EABI) specifies standard conventions for file formats, data types, register usage, stack frame organization, and function parameter passing of an embedded software program.Compilers that support the EABI… … Wikipedia
Windows Application Binary Interface — Abbreviated WABI. A specification developed by Sun Microsystems that defines how Microsoft Windows applications run on Unix workstations. The WABI interface translates the system calls made by the application into system calls that the… … Dictionary of networking
Application programming interface — API redirects here. For other uses, see API (disambiguation). An application programming interface (API) is a source code based specification intended to be used as an interface by software components to communicate with each other. An API may… … Wikipedia
Windows Application Programming Interface — Das Windows Application Programming Interface (kurz: WinAPI; Englisch für: Windows Anwendungs Programmierschnittstelle) ist eine Programmierschnittstelle und Laufzeitumgebung, welche Programmierern bereitsteht, um Anwendungsprogramme für… … Deutsch Wikipedia
Netscape Plugin Application Programming Interface — (NPAPI) is a cross platform plugin architecture used by many web browsers.It was first developed for the Netscape family of browsers starting with Netscape Navigator 2.0 but has subsequently been implemented in other browsers including Mozilla… … Wikipedia
Fragile binary interface problem — The fragile binary interface problem or FBI is a shortcoming of certain object oriented language compilers, in which internal changes to an underlying class library can cause descendant libraries or programs to cease working. It is an example of… … Wikipedia
Generic Security Services Application Program Interface — The Generic Security Services Application Program Interface (GSSAPI, also GSS API) is an application programming interface for programs to access security services.The GSSAPI is an IETF standard that addresses the problem of many similar but… … Wikipedia