The LLAMA was designed to have as few registers as possible.
P, SP, and H are shared with the WAM. Only the CT register is new; it is used for non-local exits (catch and throw) and loops (loop and do) which are implemented via non-local exits. Programs not using these builtins never access the CT register, thus no overhead for purely functional programs results.
The LLAMA has the following memory organization:
Stack, Heap, and Code are shared with the WAM. Catch Stack is used to store tuples of the form which are created by catch and removed by throw.
Memory is used to store data structures which have to live longer than entries in Stack and Heap which are reset between queries. Thus, Memory is mainly used to store global variables. Furthermore, Memory contains hash and jump tables which are created by the GAMA (see section 7).