# Intermediate code generation - To access named parameters and local variables inside a procedure, IR should be able to reference them. During the generation the needed information (e.g. offsets or registers) can be extracted from the symbol table and saved in the operands. # ELF generation - Don't ignore relocations where the symbol is not defined in the symbol table. Report an error about an undefined symbol. # Name analysis - Format error messages. - Return non-zero error code on errors. # Built-in - Implement printc (with int argument). - Implement exit() as standalone function. # Register allocation - Temporary variables always use the same register, t0. Allocate registers for temporaries. # Other - Type analysis.