Hacker News | 📄 原文链接 | 2026-10-12 收录

编译器后端 rat 的寄存器分配器:从 1392 行到 584 行

来源:hexrat.cc — 2026-10-12

📋 概述

rat 是作者的小型编译器后端(带半可用的 C99 前端),要把无限多的虚拟寄存器映射到有限物理寄存器或栈槽。它长期使用线性扫描分配器,边修边长到 1392 行;作者测量各部分的实际收益后推倒重写为 584 行的优先装箱分配器:按重要度遍历活跃区间,放进第一个容得下的寄存器,思路接近 LLVM 的 greedy 分配器但去掉大量难点,生成的代码反而更好。文中还讨论了调用约定带来的 caller-saved 约束与溢出的存取成本。

🔑 核心要点

💡 金句

So I measured which of its parts helped, threw the rest away and wrote a priority bin-packing allocator in 584 lines.
← 返回 Hacker News 首页