Application Binary Interface (ABI)

An application binary interface (ABI) is the interface between a user program and the kernel.

The eXpOS ABI defines the following:

  • The machine model - that is, the instruction set and the virtual memory address space to which an application/compiler generating executable file must generate target code for. This is very much architecture specific.

  • A logical division of the memory address space into regions - text, stack, heap and library and the low level (assembly/machine level) system call interface. This part is dependent on both the OS and the architecture.

  • The file format to be followed for executable files by the compiler (the XEXE executable file format). This part is generally OS specific and architecture independent. Compilers must generate executable files adhering to this format.

  • A low level system call interface which gives the specification of the software interrupt instruction (trap) corresponding to each system call and the order in which arguments must be passed to the system call through the application program's stack.This part is architecture dependent.

  • The low level runtime library interface : The low level runtime library interface consists of user level routines which provide a layer of abstraction between the low level system call interface and the application program by providing a unified interface for all system calls, hiding low level interrupt details from the application. (Applications however, may choose to bypass this layer and directly invoke the low level system calls.) In addition to the system call interface, application level dynamic memory allocator and deallocator functions are also part of the eXpOS library.