From Spivey's Corner
- Application Binary Interface (ABI)
- A set of conventions about the layout of memory and the use of registers that is required for machine code on a specific architecture that interacts with an operating system and existing libraries. For example, library functions may expect to be called using a specific instruction (saving the PC in a known place) and with arguments in specific registers. The ABI for a platform may be determined partly by the hardware (e.g., what the subroutine call instruction does) and partly by agreement among all software suppliers (e.g., which registers are preserved across subroutine calls).
- Operator tree (optree)
- A tree whose nodes are labelled with elementary operations, such as forming the address of a local variable, loading from an address, or adding two integers together. In the course, these operations will be expressed as Keiko instructions. Machine code can be generated by finding groups of nodes ('tiles') in an operator tree that can be covered by single instructions of the target machine.
- Scratch register
- A register that is set aside for temporary use, typically in a short sequence of instructions that translate a single operation. For example, on the ARM we set aside
IPas a scratch register, and we can branch to an arbitrary address using the sequence
set ip, #addr; br ip.