Code Generation
Code generation can be broken into several steps:
Subroutines are provided to generate the prologue and epilogue.
The arguments to the code generator are:
/* code tree stack frame size */
gencode(parseresult, blockoffs[blocknumber],
labelnumber);
parseresult = pointer to code tree:
(program foo (progn output)
(progn ...))
blockoffs[blocknumber]
= size of local variables, bytes
labelnumber = max label number used so far