一种简单高效的寄存器分配算法

41 阅读1分钟

两个寄存器 r1 r2

[_, _]

a = 3 -> r1 放入空寄存器 [a, _]

b = 2 -> r2 [a, b]

c = a + b -> r2 将暂时不会使用的变量放入内存(下一行使用了a 而 很长一段时间内都未使用 b 所以将 b 放入内存 )[a, c]

d = c * 2 + a -> r1 a 不再使用了"回收"r1-将寄存器标记为未使用 [d, c]

e = c*2 [d, e]

d += b save e load b [d, b] 回收 b [d, _]

d += e load e [d, e] 回收e [d, _]

return d