mu/archive/2.transect/compiler2

28 lines
636 B
Plaintext

to dereference a heap allocation
copy handle to stack
perform lookup to stack
lookup x in *(ESP+4) of type (handle T)
reg <- copy *(ESP+5) : (address T stack)
payload alloc id <- copy *reg
address alloc id <- copy *(ESP+4)
compare payload alloc id, address alloc id
jump if not equal to print stack trace and panic
address <- add reg, 1
types:
address T reg
address T stack
address T heap
address T global
copy down this spectrum is not permitted, but up is.
addresses aren't allowed in types, globals and on the heap. Only handles.
addresses are only for temporary manipulations.
*(address T) <- copy T