Andy Pack
5f04cacd81
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
1.3 KiB
1.3 KiB
tags | ||
---|---|---|
|
- 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