Memory Access Instructions
In these instructions, the /immediate variants represent their indexes or counts as immediates; otherwise these values are unboxed u64 locals.
Instruction: allocate-words s12:dst s12:count
Instruction: allocate-words/immediate s12:dst c12:count
Allocate a fresh GC-traced object consisting of count words and store it into dst.
Instruction: scm-ref s8:dst s8:obj s8:idx
Instruction: scm-ref/immediate s8:dst s8:obj c8:idx
Load the SCM object at word offset idx from local obj, and store it to dst.
Instruction: scm-set! s8:dst s8:idx s8:obj
Instruction: scm-set!/immediate s8:dst c8:idx s8:obj
Store the scm local val into object obj at word offset idx.
Instruction: scm-ref/tag s8:dst s8:obj c8:tag
Load the first word of obj, subtract the immediate tag, and store the resulting SCM to dst.
Instruction: scm-set!/tag s8:obj c8:tag s8:val
Set the first word of obj to the unpacked bits of the scm value val plus the immediate value tag.
Instruction: word-ref s8:dst s8:obj s8:idx
Instruction: word-ref/immediate s8:dst s8:obj c8:idx
Load the word at offset idx from local obj, and store it to the u64 local dst.
Instruction: word-set! s8:dst s8:idx s8:obj
Instruction: word-set!/immediate s8:dst c8:idx s8:obj
Store the u64 local val into object obj at word offset idx.
Instruction: pointer-ref/immediate s8:dst s8:obj c8:idx
Load the pointer at offset idx from local obj, and store it to the unboxed pointer local dst.
Instruction: pointer-set!/immediate s8:dst c8:idx s8:obj
Store the unboxed pointer local val into object obj at word offset idx.
Instruction: tail-pointer-ref/immediate s8:dst s8:obj c8:idx
Compute the address of word offset idx from local obj, and store it to dst.