Content deleted Content added
Stevebroshar (talk | contribs) →Description: 'details' is awkward; overly generic |
Stevebroshar (talk | contribs) eliminate 'complete ABI' section since only the 1st paragraph was about that; moved that to intro and merged 2nd para into description list |
||
Line 11:
API compatibility is generally the concern for [[system design]] and of the toolchain. However, a [[programmer]] may have to deal with an ABI directly when writing a program in a multiple [[programming language|languages]] or [[compiler]]s.
A complete ABI, such as the [[Intel Binary Compatibility Standard]] (iBCS),<ref>[http://www.everything2.com/index.pl?node=iBCS Intel Binary Compatibility Standard (iBCS)]</ref> 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:
* Processor instruction set, with details like register file structure, stack organization, memory access types, etc.
*
* [[Calling convention]], which controls how the arguments of [[function (programming)|function]]s are passed, and return values retrieved; for example, it controls the following:
** Whether all parameters are passed on the stack, or some are passed in registers
Line 21 ⟶ 23:
** Whether the first function parameter passed on the stack is pushed first or last
** Whether the caller or callee is responsible for cleaning up the stack after the function call
* [[name mangling#Name mangling in C++|Name mangling]]<ref>{{cite web|url=https://itanium-cxx-abi.github.io/cxx-abi/|title=Itanium C++ ABI}} (compatible with multiple architectures)</ref>
* [[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>
* 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 [[Method stub|stubs]], the system call numbers
* In the case of a complete operating system ABI, the binary format of [[object file]]s, program libraries, etc.
▲A complete ABI, such as the [[Intel Binary Compatibility Standard]] (iBCS),<ref>[http://www.everything2.com/index.pl?node=iBCS Intel Binary Compatibility Standard (iBCS)]</ref> 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.
== {{Anchor|EABI}}Embedded ABI ==
|