Недоліки функціональної проміжної форми


16

Я пишу оптимізатор для мови, схожої на JavaScript, і потрібно вибрати проміжне представлення коду. Очевидним / типовим вибором в наші дні є статичне одиночне призначення (SSA).

Однак реалізація сучасного компілятора в C також обговорює функціональну проміжну форму, що в основному означає функціонування чистого функціоналу для проміжного представлення (чисте з точки зору лише локальних змінних, дані купи все ще змінюються, а не CPS, просто прямі letблоки та виклики хвоста) та має деякі переваги з точки зору того, що простіше міркувати.

Імовірно, це не безпроблемна людина, або кожен би вже використовував таке представлення, тому моє питання полягає в тому, які недоліки має функціональна проміжна форма порівняно з SSA?


3
Який аналіз ви збираєтеся робити за цією проміжною формою? SSA чудово підходить для усунення мертвих кодів, постійного розповсюдження, часткової спеціалізації тощо. Якщо подібних матеріалів немає у вашому меню, ви можете пропустити SSA та використовувати більш розслаблене подання для більш простого аналізу даних. Але створення форми SSA є досить тривіальним завданням, і ви можете легко перетворити SSA в CPS (і навпаки), що подвоює переваги.
SK-логіка

Так, я цілеспрямований на повний об'єм, і мова введення та формат виводу (спочатку C ++) - обоє обов'язкові мови.
rwallace

Створення форми SSA є досить тривіальним завданням, і ви можете легко конвертувати SSA в CPS, також ви можете конвертувати CPS в SSA, що подвоює переваги.
Леон Алексіс Кардинал

Відповіді:


1

SSA відмінно підходить для усунення мертвих кодів, постійного розповсюдження, часткової спеціалізації тощо. Якщо подібних матеріалів немає у вашому меню, ви можете пропустити SSA та використовувати більш розслаблене подання для більш простого аналізу даних

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.