Expand description
Dynamically emitted HashX assembly code for x86_64 targets
Macrosยง
- dynasm ๐
- Wrapper for
dynasm!, sets the architecture and defines register aliases
Constantsยง
- BUFFER_
CAPACITY ๐ - Capacity for the temporary output buffer, before code is copied into a long-lived allocation that can be made executable.
- EPILOGUE_
SIZE ๐ - Architecture-specific fixed epilogue size
- INSTRUCTION_
SIZE_ ๐LIMIT - Architecture-specific maximum size for one instruction
- PROLOGUE_
SIZE ๐ - Architecture-specific fixed prologue size
- REGS_
TO_ ๐SAVE - List of registers to save on the stack, in address order
Traitsยง
- Register
Mapper ๐ - Map RegisterId in our abstract program to concrete registers and addresses.
Functionsยง
- emit_
init_ ๐locals - Emit code to initialize our local variables to default values.
- emit_
instruction ๐ - Emit code for a single
Instructionin the hash program. - emit_
load_ ๐input - Emit code to move all input values from the RegisterFile into their actual hardware registers.
- emit_
restore_ ๐regs - Emit code to restore REGS_TO_SAVE and deallocate stack space.
- emit_
return ๐ - Emit a return instruction.
- emit_
save_ ๐regs - Emit code to allocate stack space and store REGS_TO_SAVE.
- emit_
store_ ๐output - Emit code to move all output values from machine registers back into their RegisterFile slots.
- stack_
size ๐ - Calculate the amount of stack space to reserve, in bytes.
Type Aliasesยง
- Assembler ๐
- Architecture-specific specialization of the Assembler