Application binary interface: Difference between revisions

Content deleted Content added
Even computer-generated code can use ABIs when compiled; no need for a programmer to generate it. A library can make calls to another library, and thus use its ABI.
top: Re-worded and streamlined.
Line 2:
[[File:Linux API and Linux ABI.svg|thumb|300px|[[Linux kernel]] and [[GNU C Library]] define the [[Linux kernel interfaces#Kernel–user space API|Linux API]]. After compilation, the binaries offer an ABI; keeping this ABI stable over a long time is important for [[Independent software vendor|ISVs]].]]
 
In [[computer software]], an '''application binary interface''' ('''ABI''') is thean [[interface (computing)|interface]] between two program modules; often, one of whichthese modules is often a [[Library (computing)|library]] and/or [[operating system]] facility, and the other one is usuallya anprogram applicationthat oris anotherbeing library. In contrast to an [[Application programming interface|''API'']], which defines structures and methods one can use at software level, an ''ABI'' defines the structures and methods used to access external, ''already compiled'' libraries/code at the level of [[machine code]]. It does thisrun by determining in which binary format information should be passed from one program component to the next, or to the operating system in the case of a [[system call]]user. Thus it sets details such as the [[calling convention]].
 
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 [[Application programming interface|''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 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]].
Adhering to ABIs (which may or may not be officially standardized) is usually the job of the [[compiler]], OS or library writer, but application programmers may have to deal with ABIs directly when writing programs in a mix of programming languages, using [[foreign function call]] interfaces between them.
 
Adhering to ABIsan ABI (which may or may not be officially standardized) is usually the job of thea [[compiler]], OSoperating system, or library writerauthor; however, butan application programmersprogrammer may have to deal with ABIsan ABI directly when writing programsa program in a mix of programming languages, which can be achieved by using [[foreign function call]] interfaces between thems.
ABIs differ from [[application programming interface]]s (APIs), which similarly define interfaces between program components, but at the [[source code]] level.
 
== Description ==