summaryrefslogtreecommitdiffstats
path: root/content/zettel/1c5a.md
blob: 112bc3dea77a87128422b07649e0ebed2f32b36b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
+++
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.