blob: 5c06cc4f7b6569e7d93f1cef52fa06718fa433f3 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
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
|