rat es un backend de compilador que genera código x86-64 con un asignador de registros diseñado para minimizar el uso de memoria. A diferencia de los asignadores lineales tradicionales, rat emplea un algoritmo de empaquetado por prioridad que asigna registros físicos a rangos de vida basándose en su importancia, logrando un código más eficiente. El sistema opera en cinco pasos: identifica rangos de vida, marca registros fijos, consolida copias de datos, asigna registros y maneja el desbordamiento (spilling) en la pila. Un aspecto clave de su diseño es la gestión automática de los registros salvados por el llamador y los salvados por el llamado, lo que elimina la necesidad de instrucciones explícitas de restauración y reduce significativamente el código generado. Al no realizar evicción ni dividir rangos, rat simplifica la lógica de asignación. El proyecto, que incluye un frontend C99 semi-funcional, destaca por su eficiencia en la asignación de 12 registros generales y 14 registros xmm, ofreciendo una alternativa más compacta y performante para compiladores que requieren alta calidad de código en arquitecturas x86-64.
