El análisis de vivacidad: el paso clave para asignar registros en compiladores
An ode to livelyness analysis; SSA to registers
El autor explica cómo implementar análisis de vivacidad para la asignación de registros en su lenguaje purple-garden, que compila a una máquina virtual de bytecode y a un JIT de x86. Partiendo de una representación SSA sin nodos phi, recorre bloques, terminadores e instrucciones en orden inverso para calcular los intervalos de vida de cada registro virtual. Con funciones auxiliares en Rust, muestra cómo integrar esta información en el asignador de registros y asignar los recursos limitados del hardware.
El análisis de vivacidad es el primer paso en esta odisea: determinar dónde está vivo cada valor y dónde debe considerarse muerto.