+++ title = "Components of Register Allocation" author = "Yann Herklotz" tags = [] categories = [] backlinks = ["1c5"] forwardlinks = ["1c5b"] zettelid = "1c5a" +++ Move insertion : This consists of increasing the number of moves so that the variable can live in various registers over its lifetime. This occurs in the split live range approach. Spilling : This consists of storing a variable to memory because there aren't enough registers available. Assignment : This consists of assigning a register to a variable. Coalescing : This consists of limiting the number of move instructions, thereby reducing the total number of instructions. This can be done by identifying variables that are live over various blocks and storing it constantly in one variable.