All Topics  
Application binary interface

 

   Email Print
   Bookmark   Link






 

Application binary interface



 
 
In computer software
Computer software

Computer software, or just software is a general term used to describe a collection of computer programs, Algorithm and Software documentation that perform some tasks on a computer system....
, an application binary interface (ABI) describes the low-level interface between an application (or any type of) program and the operating system
Operating system

An operating system is an interface between hardware and applications; it is responsible for the management and coordination of activities and the sharing of the limited resources of the computer....
 or an other application.

cover details such as data type size and alignment, the calling convention
Calling convention

In computer science, a calling convention is a scheme for how function s receive parameters from their caller and how they return a result; calling conventions can differ in:...
, which controls how functions' arguments are passed and return values retrieved; the system call
System call

In computing, a system call is the mechanism used by an application program to request service from the kernel based on the Monolithic_kernel or to system servers on operating systems based on the microkernel-structure....
 numbers 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 file
Object file

In computer science, object code, or an object file, is the representation of code that a compiler or assembler generates by processing a source code file....
s, program libraries and so on.






Discussion
Ask a question about 'Application binary interface'
Start a new discussion about 'Application binary interface'
Answer questions from other users
Full Discussion Forum



Encyclopedia


In computer software
Computer software

Computer software, or just software is a general term used to describe a collection of computer programs, Algorithm and Software documentation that perform some tasks on a computer system....
, an application binary interface (ABI) describes the low-level interface between an application (or any type of) program and the operating system
Operating system

An operating system is an interface between hardware and applications; it is responsible for the management and coordination of activities and the sharing of the limited resources of the computer....
 or an other application.

Description

ABIs cover details such as data type size and alignment, the calling convention
Calling convention

In computer science, a calling convention is a scheme for how function s receive parameters from their caller and how they return a result; calling conventions can differ in:...
, which controls how functions' arguments are passed and return values retrieved; the system call
System call

In computing, a system call is the mechanism used by an application program to request service from the kernel based on the Monolithic_kernel or to system servers on operating systems based on the microkernel-structure....
 numbers 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 file
Object file

In computer science, object code, or an object file, is the representation of code that a compiler or assembler generates by processing a source code file....
s, program libraries and so on. A complete ABI, such as the Intel Binary Compatibility Standard (iBCS), allows a program from one operating system supporting that ABI to run without modifications on any other such system, provided that necessary shared libraries are present, and similar prerequisites are fulfilled.

Other ABIs standardize details such as the C++ name decoration
Name mangling

In software compiler software engineering, name mangling is a technique used to solve various problems caused by the need to resolve unique names for programming entities in many modern programming languages....
, exception
Exception handling

Exception handling is a programming language construct or computer hardware mechanism designed to handle the occurrence of exceptions - special conditions that change the normal flow of execution....
 propagation, and calling convention between compilers on the same platform, but do not require cross-platform compatibility.

An ABI should not be confused with an application programming interface
Application programming interface

An application programming interface is a set of subroutine, data structures, class and/or Protocol provided by library and/or operating system Service s in order to support the building of applications....
 (API) which defines a library of routines to call, data structures to manipulate, and/or object classes to use in the construction of an application using that particular (often language specific) API.

EABI

An embedded-application binary interface (EABI) specifies standard conventions for file format
File format

A file format is a particular way to encode information for storage in a computer file.Since a disk drive, or indeed any computer storage, can store only bits, the computer must have some way of converting information to 0s and 1s and vice-versa....
s, data types, register usage, stack frame organization, and function parameter passing of an embedded
Embedded system

An embedded system is a special-purpose computer system designed to perform one or a few dedicated functions, often with real-time computing constraints....
 software program.

Compiler
Compiler

A compiler is a computer program that transforms source code written in a programming language into another computer language . The most common reason for wanting to transform source code is to create an executable program....
s that support the EABI create object code that is compatible with code generated by other such compilers, thus allowing developers to link libraries generated with one compiler with object code generated with a different compiler. Developers writing their own assembly language
Assembly language

An assembly language is a low-level language for programming computers. It implements a symbolic representation of the numeric machine codes and other constants needed to program a particular CPU architecture....
 code may also use the EABI to interface with assembly generated by a compliant compiler.

The main differences of an EABI with respect to an ABI for general purpose operating systems are that privileged instructions are allowed in application code, dynamic linking is not required (sometimes it is completely disallowed), and a more compact stack frame organization to save memory.

Widely used EABIs include PowerPC
PowerPC

PowerPC is a RISC instruction set architecture created by the 1991 Apple Inc.?IBM?Motorola alliance, known as AIM alliance. Originally intended for personal computers, PowerPC CPUs have since become popular embedded system and high-performance processors....
 and ARM
ARM architecture

The ARM architecture is a 32-bit RISC central processing unit architecture developed by ARM Limited that is widely used in embedded system designs....
.

See also

  • Programming
  • Opaque pointer
    Opaque pointer

    In computer programming, an opaque pointer is a datatype that hides its internal implementation using a pointer. This allows the implementation of the whole interface to change without the need to recompile the module s using it....
  • PowerOpen Environment
    PowerOpen Environment

    The PowerOpen Environment , created in 1991, is an open standard for running a Unix-based operating system on the PowerPC computer architecture....


External links

  • Good summary and comparison about some popular ABIs
  • for the Freescale M·CORE
    M·CORE

    M?CORE is a low-power, RISC-based microcontroller microarchitecture developed by Motorola , intended for use in embedded systems. Introduced in late 1997, the architecture combines a 32-bit internal data path with 16-bit instructions, and includes a four-stage instruction pipeline....
     processors