Suppose we have a machine with an infinite stack and an infinite number of "registers", but no arbitrary memory access, and its data is separate from the code.

I am sure that these are at least pushdown machines, but I am not quite sure if we can bring this machine up to linear automation. The upper bound is obviously the Turing machine (because pushdown machines with an extra stack have the same capabilities as the Turing machine).

The only way to save data using these machines is to move them to the stack (`push #3`

– Move content from register 3 to the stack or `push 3`

– push 3 on the stack) or use mov command with at least one register specification (`mov #1, 1`

Register 1 = 1, `mov #2, #1`

, Register 2 = register 1). We can also assume that loop operations are present, along with addition or subtraction.

The questions are:

- What is the class of these machines?
- If these machines are not a linear-limited automation or Turing machine, you must complete the following steps to create one:
- Add another batch
- Allow arbitrary memory access