An application binary interface (ABI) is an interface exposed by software that is defined for in-process machine code access. Often, the exposing software is a library, and the consumer is a program.

Includes :

  • Instruction set
  • size, layout, alignment of basic data types which processor can access
  • calling conventions and layouts of the stack
  • Name Mangling
  • exception propagation
  • syscall calling conventions
  • for OS ABI, binary formats as well