stem/CS/ABI.md
Andy Pack 5f04cacd81 vault backup: 2023-12-27 09:30:39
Affected files:
.obsidian/workspace.json
Projects/Dev Options.md
Projects/Mixonomer.md
Projects/NoteCrawler.md
Projects/Selector.md
Projects/To Do App.md
STEM/CS/ABI.md
STEM/CS/Calling Conventions.md
STEM/CS/Code Types.md
STEM/CS/Compilers.md
STEM/CS/ISA.md
STEM/CS/Language Binding.md
STEM/CS/Languages/Assembly.md
STEM/CS/Languages/C++.md
STEM/CS/Languages/Javascript.md
STEM/CS/Languages/Python.md
STEM/CS/Languages/Rust.md
STEM/CS/Languages/dotNet.md
STEM/IOT/OS/Composition.md
2023-12-27 09:30:39 +00:00

1.3 KiB

tags
low-level
dev
  • 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

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 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

Embedded ABI

  • File format, data types, register usage, stack frame organisation, function parameter passing conventions
    • For embedded OS
  • Compilers create object code compatible with code from other compilers