1. Describe an algorithm for computing next use and liveness properties at each quad level in a basic block.
2. Describe the data structures and the algorithm for a simple target code generator that retains the values of variables in registers for as long as possible.
3. What is peep-hole optimisation? Give five examples of patterns and their replacements used in peep-hole optimisation, justifying the improvement in performance or memory usage.