9.3.7.9 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.