Jump to content

Разреженное условное постоянное распространение

В информатике компиляторах разреженное условное распространение констант (SCCP) — это оптимизация, часто применяемая в после преобразования в статическую форму однократного присваивания (SSA). Он распространяет константы , которые представляют собой вычисление статических значений, которые можно вычислить во время компиляции. Более того, он может найти больше постоянных значений и, следовательно, больше возможностей для улучшения, чем отдельно применяя устранение мертвого кода и распространение констант в любом порядке или с любым количеством повторений. [1] [2]

Алгоритм работает , выполняя абстрактную интерпретацию кода в форме SSA. Во время абстрактной интерпретации обычно используется плоская решетка констант для значений и глобальная среда, сопоставляющая переменные SSA со значениями в этой решетке. Суть алгоритма заключается в том, как он обрабатывает инструкции перехода . При обнаружении условия для ветки оцениваются как можно лучше, учитывая точность абстрактных значений, привязанных к переменным в условии. Может случиться так, что значения совершенно точны (ни сверху, ни снизу), и, следовательно, абстрактное выполнение может решить, в каком направлении разветвляться. Если значения не являются постоянными или переменная в условии не определена, то необходимо выбрать оба направления ветвления, чтобы оставаться консервативными.

По завершении абстрактной интерпретации инструкции, которые так и не были достигнуты, помечаются как мертвый код. Переменные SSA, имеющие постоянные значения, затем могут быть встроены (распространены) в точку их использования. [ нужен пример ]

Примечания

[ редактировать ]
  1. ^ Вегман, Марк Н. и Задек, Ф. Кеннет. « Постоянное распространение с условными ветвями ». Транзакции ACM по языкам и системам программирования , 13 (2), апрель 1991 г., страницы 181–210.
  2. ^ Клик, Клиффорд и Купер, Кейт. « Объединение анализа, объединение оптимизаций », Транзакции ACM в языках и системах программирования , 17 (2), март 1995 г., страницы 181–196.
  • Купер, Кейт Д. и Торчон, Линда. Разработка компилятора . Морган Кауфманн. 2005.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 813647afa389feda1dbfbd0d3ce6356f__1715024340
URL1:https://arc.ask3.ru/arc/aa/81/6f/813647afa389feda1dbfbd0d3ce6356f.html
Заголовок, (Title) документа по адресу, URL1:
Sparse conditional constant propagation - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)