ABI
- How data structures & computational routines are accessed in machine code (Code Types)- Machine code therefore hardware-dependent
 
- API defines this structure in source code
- Adherence usually responsibility of- Compilers
- OS
- Library author
 
Components
- Processor instruction set- Register file structure
- Stack organisation
- Memory access types
 
- Size, layouts and alignments of basic data types
- Calling Conventions- How function arguments are passed- Stack or register
- Which registers for which function param
- Parameter order
 
- Return values retrieved
 
- How function arguments are passed
- How app makes sys calls to OS- If ABI specifies direct sys calls over procedure calls to sys call stubs then sys call numbers
 
- Binary format of object files, program files- For complete OS ABIs
 
Complete ABI
- Allows program from one OS to run on any other without change- Provided all shared libraries and prerequisites etc