In particular, variables can be referenced by name without the need for explicit addressing. Branches and calls can be to any label without regard for its offset from the current pc. There are no delay slots, and thus no annul forms. Then a call instruction is executed. Within the procedure, the formal parameters can be accessed by name, just like local variables.
Procedures return by executing a return instruction.
It is not necessary to use a symbol table when generating intermediate code. Submitting the Program Prepare a makefile that builds your generator and produces an executable called irgen .