Content deleted Content added
Guy Harris (talk | contribs) →{{Anchor|EABI}}Embedded ABI: Speak of the PowerPC, Arm, and MIPS EABIs rather than of PowerPC, the Arm EABI, and the MIPS EABI, omitting "EABI" from "PowerPC". |
Guy Harris (talk | contribs) →Description: The call stack layout may be determined by the instruction set to some degree, but it's usually not completely determined by the instruction set. |
||
Line 14:
== Description ==
Interface aspects covered by an ABI include:
* [[Processor (computing)|Processor]] [[instruction set]], with details like register file structure
* Size, layout, and [[Data structure alignment|alignment]] of basic [[data type]]s that the processor can directly access
* [[Calling convention]], which controls how the arguments of [[function (programming)|function]]s are passed, and return values retrieved; for example, it controls the following:
** How the [[call stack]] is organized
** Whether all parameters are passed on the call stack, or some are passed in registers ** Which registers are used for which function parameters
** Whether the first function parameter passed on the call stack is pushed first or last
** Whether the caller or callee is responsible for cleaning up the call stack after the function call
* [[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>
|