rat reescribe su asignador de registros y pasa de 1392 a 584 líneas

Rat's Register Allocator

El compilador rat ha sustituido su asignador de registros por linear scan, que había crecido hasta 1392 líneas, por un asignador de bin-packing con prioridades de solo 584 líneas, inspirado en el greedy allocator de LLVM. La nueva versión asigna registros a los rangos de vida por orden de importancia, sin desalojo, sin división de rangos y sin pasos repetidos, y además genera mejor código.

Ninguna línea del asignador dice «coloca los valores que cruzan una llamada en registros callee-saved». Surge del diseño, y esa es mi parte favorita.

Más de este día

2026-10-11