Treating Registers as Stack

One approach (works with sufficiently many registers, e.g. 15 or 31):

  • treat registers as a stack of bounded depth
  • keep at compile time index i of current stack position
    • if position is i, we treat Reg_i (the i-th resiter) as the top of stack

Observe: even in stack-based code generation, we could compute statically the depth of operand stack after each instruction!

  • JVM requires that the bytecode for procedure leaves the stack the same as at program entry