Content deleted Content added
AsmCoder110 (talk | contribs) mNo edit summary |
m Fixed grammar Tags: canned edit summary Mobile edit Mobile app edit iOS app edit App section source |
||
(88 intermediate revisions by 43 users not shown) | |||
Line 1:
{{short description|Interface to software defined in terms of in-process, machine code access}}
{{Use dmy dates|date=June 2020}}
[[File:Linux kernel interfaces.svg|thumb|300px|A high-level comparison of in-kernel and kernel-to-userspace APIs and ABIs]]
[[File:Linux API and Linux ABI.svg|thumb|300px|The [[Linux kernel]] and [[GNU C Library]] define the [[Linux kernel interfaces#Kernel–user space API|Linux API]]. After compilation, the binaries offer an ABI
An
A complete ABI enables a program that supports an ABI to run without modification on multiple operating systems that provide the ABI. The target system must provide any required libraries (that implement the ABI), and there may be other prerequisites.
== Description ==
Interface aspects covered by an ABI include:
*
*
*
** How the [[call stack]] is organized ** Whether all parameters are passed on the call stack, or some are passed in registers ** ** ** Whether the caller or callee is responsible for cleaning up the call stack after the function call
* how an application should make [[system call]]s to the operating system and, if the ABI specifies direct system calls rather than procedure calls to system call stubs, the system call numbers▼
* [[Name mangling]]<ref>{{cite web|url=https://itanium-cxx-abi.github.io/cxx-abi/|title=Itanium C++ ABI}} (compatible with multiple architectures)</ref>
* and in the case of a complete operating system ABI, the binary format of [[object file]]s, program libraries and so on.▼
* [[exception handling|Exception]] propagation<ref>{{cite web|url=http://itanium-cxx-abi.github.io/cxx-abi/abi-eh.html|title=Itanium C++ ABI: Exception Handling}} (compatible with multiple architectures)</ref>
▲*
▲*
ABIs include the [[Intel Binary Compatibility Standard]] (iBCS)<ref>{{cite web |url=http://www.everything2.com/index.pl?node=iBCS |title=Intel Binary Compatibility Standard (iBCS)}}</ref> and the [[System V Release 4]] ABIs for various instruction sets.
== {{Anchor|EABI}}Embedded
An '''embedded
Each compiler and [[
| title = PowerPC Embedded Application Binary Interface: 32-Bit Implementation
| date = 1 October 1995
| edition = Version 1.0
| chapter = EABI Summary
| pages = 28–30
| publisher = Freescale Semiconductor, Inc
| url = http://www.nxp.com/
}}</ref> The choice of EABI can affect performance.<ref>{{cite web
|title=Debian ARM accelerates via EABI port
|date=
|publisher=Linuxdevices.com
|url=http://linuxdevices.com/news/NS9048137234.html
|access-date=11 October 2007
|
|
|url-status=dead
}}</ref><ref>{{cite web
|author=Andrés Calderón and Nelson Castillo
|title=Why ARM's EABI matters
|date=
|publisher=Linuxdevices.com
|url=http://linuxdevices.com/articles/AT5920399313.html
|access-date=11 October 2007
|
|
|url-status=dead
}}</ref>
Widely used EABIs include the [[PowerPC]],<ref name="ppc-eabi"/> [[
== See also ==
{{Portal
* {{Annotated link|Bytecode}}
▲* [[Binary code compatibility]]
* {{Annotated link|Debug symbol}}
▲* [[Comparison of application virtual machines]]
▲* [[Foreign function interface]]
* {{Annotated link|Native (computing)}}
▲* [[Language binding]]
*
*
*
*
* [[Visual C++#Compatibility|Visual C++
==References==
Line 83 ⟶ 88:
* [https://developer.apple.com/library/content/documentation/DeveloperTools/Conceptual/LowLevelABI/000-Introduction/introduction.html OS X ABI Function Call Guide]
* [http://wiki.debian.org/ArmEabiPort Debian ARM EABI port]
* [http://www.uclibc.org/
*
* [http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.
* [
*
* [
{{Application binary interface}}
|