The compiler partitions the MAXQ general purpose registers into two sets.

The registers in the first set, A[4] through A[7], are used for parameter passing and returning function results and are not preserved across functions calls. In addition the registers DP[0], DP[1], LC[0], LC[1], BP, OFFS, AP, and GR are not preserved across a function call.

The registers in the second set, A[0]-A[3] and A[9]-A[15], are used for registerized variables, working storage, and temporary results and must be preserved across function calls.