ABSTRACT

Compilers introduce an unbounded number of temporary registers during different phases of compilation; these temporary registers arise from the translation of programmer declared variables, simplification of complex expressions, and introduction of temporaries during different optimization phases. However, the target hardware is constrained by the limited number of actual available registers. The task of the register allocator is to map these temporary registers to real registers and memory locations. In the text, we shall be abbreviating temporary registers as pseudos and actual registers as registers.