Application Binary Interface (ABI)

From COMP15212 Wiki
Revision as of 13:12, 17 July 2019 by pc>Yuron (Yuron moved page ABI to Application Binary Interface (ABI) over redirect)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Depends on LibrariesShell

"Application Binary Interface" (ABI) is the name given to the set of rules which a particular processor (e.g. x86, ARM, …) uses to communicate between different program elements in the object (i.e. the ‘binary’) code level. Although influenced by the processor architecture, it is a software convention.

For example, if function arguments are passed on the stack, which is pushed first?

int funcy(int x, int y, int z)

When calling this, should one: push x; push y; push z; call funcy;

or push z; push y; push x; call funcy; ?

The ABI specifies which. This is important if parts of the code are written in different languages or built using different compilers.

It is (a bit) relevant here as operating system calls will have a definition which must be met, although for the applications programmer this will typically be provided by library calls.

API

The ABI is a lower level specification than the (perhaps) more familiar Application Programming Interface (API), which is a source level specification. For example, in the above example it would specify what the arguments {x, y, z} are and the order in which they appear in the source code.



Articles on Concepts
About this resource • Application Binary Interface (ABI) • Arrays • Atomicity • Boot • Cache • Cacheability • Caching • Concepts • Containers • Context • Context Switching • Deadlock • Direct Memory Access (DMA) • Environment Variables • Exceptions • File Attributes • Fragmentation • Hypervisor • Interrupts • Operation Ordering • PATH • Pointers • Process Scheduling • Processes • Processor Privilege • Queues • Real Time • Reentrancy • Relocatable Code • Spooling and Buffering • Synchronisation • Thrashing • Threads • Virtual Memory • Virtualisation
Articles on User
"Everything is a File" • Application Binary Interface (ABI) • Arrays • Boot • Buffer Overflow • Containers • Daemons • Disk Partition • Dynamic Memory Allocation • Emulator traps • Environment Variables • Errors • Exceptions • File Attributes • File Locking • File Permissions • Introduction to Operating Systems • Journalling File System • Links • Locks • Man(ual pages in Unix) • Memory Mapped Files • Monitoring • Network File System (NFS) • PATH • Pipes • Pointers • Relocatable Code • Reset • SETUID • Shell • Sockets • Spooling and Buffering • Streams • Structures • Superuser • System Calls • Unix Signals • User • Using Peripherals