Оглавление
Выбор инструкции
-
Выбор команд в компиляторе
- Выбор команд преобразует промежуточное представление в низкоуровневое IR.
- Предшествует планированию команд и распределению регистров.
- Выходные данные содержат псевдорегистры и могут быть оптимизированы.
- Похож на машинный код, байт-код и язык ассемблера.
-
Макрорасширение
- Макрорасширение сопоставляет шаблоны в IR среднего уровня.
- При совпадении выполняется макрос, генерирующий целевые инструкции.
- Может выполняться в текстовом или графическом представлении IR.
- Обычно сочетается с оптимизацией на глазок для повышения эффективности.
- Пример подхода – GCC.
-
Покрытие графика
- Преобразование IR в граф и покрытие его шаблонами.
- Шаблон соответствует части графа и может быть реализован одной командой.
- Цель – минимизировать стоимость выбранных шаблонов, обычно количество циклов.
- Для древовидных графов используется динамическое программирование, для DAG и полных графов – жадные алгоритмы или комбинаторная оптимизация.