Как анализ живости значений спасает регистры в компиляторе purple-garden

An ode to livelyness analysis; SSA to registers

Автор рассказывает, как встроил анализ живости (liveness analysis) в компилятор своего языка purple-garden. Виртуальные регистры в SSA-форме получают интервалы жизни (lo, hi), после чего распределитель регистров может отображать их на ограниченный набор аппаратных регистров x86 или слоты стека. Показан конкретный пример IR, таблица времён жизни и компактная реализация на Rust — без phi-узлов, только параметры блоков и терминаторы.

Регистровый аллокатор — это назначение неограниченного количества виртуальных регистров ограниченному набору аппаратных ресурсов: регистрам общего назначения, регистрам с плавающей точкой и стеку.

Ещё за этот день

2026-11-09