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

40 lines
1.3 KiB
Markdown

---
tags:
- low-level
- dev
---
- How data structures & computational routines are accessed in machine code ([Code Types](Code%20Types.md))
- Machine code therefore hardware-dependent
- API defines this structure in source code
- Adherence usually responsibility of
- [Compilers](Compilers.md)
- 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](Calling%20Conventions.md)
- 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](Compilers.md) create object code compatible with code from other [compilers](Compilers.md)
- Link libraries from different [compilers](Compilers.md)