1. A method, comprising: receiving a low level language instruction that accesses a word in a memory, the word having a first type and the memory including one of a stack or a heap; labeling positions in each of the stack or the heap as one or more specified positions and one or more unspecified positions; assigning a second type to the memory, the second type including the first type, the word being at one of the one or more unspecified positions or the one or more specified positions; and determining whether the low level language instruction is well-typed by applying one or more rules to the instruction and to the second type.