Я читал о методах локальной оптимизации компилятора, но я не понимаю, как они реализованы. Идея состоит в том, что оптимизатор каждый раз просматривает «окно» кода и каким-то образом обнаруживает шаблоны и заменяет их более оптимизированными версиями.
Мой вопрос в том, как обнаружить эти закономерности? (предположим, что ваша платформа представляет собой виртуальную машину, которая выводит ассемблерный код для собранного -компьютера, такого как Schocken's Hack ).
Действительно ли люди проверяют код вручную (, используя графы потоков управления, DAG или что-то еще ), а затем собирают все выявленные шаблоны и кодируют их в оптимизаторе? Или есть автоматический способ.
Например, вы загружаете код -в -для -оптимизации в анализаторе, и он выдает указанные шаблоны. Если да, то как можно начать писать?