Открытое использование вверх
Открытое вверх использование или достижимое использование , [ 1 ] — это концепция теории компиляторов , которая возникает на этапе распространения копии при компиляции. [ 2 ]
Использование
[ редактировать ]На этапе распространения копии при компиляции программы экземпляры цели заменяются присвоениями их значений. В ходе этого процесса компилятору необходимо понимать, к каким экземплярам цели осуществляется доступ, чтобы могла произойти соответствующая замена, связанная с концепцией достижения определения при достижении анализа. [ 3 ] Это сделано с целью упрощения кода перед выполнением: если количество открытых использований присваивания равно нулю, оно не способствует конечному результату кода и может быть безопасно удалено. [ 1 ] Это также полезно для повышения безопасности кода на этапах компиляции. [ 4 ]
Пример
[ редактировать ]Рассмотрим следующий псевдокод:
x = 1
y = z
if False:
x = 0
else:
x = y + 2
Можно с уверенностью предположить, что линия 5 никогда не появится, о чем свидетельствует то, что количество открытых вариантов использования этой точки равно нулю. Следовательно, это можно упростить:
y = z
x = z + 2
Это приводит к получению результата, который проще компилировать и более эффективно использовать. [ 2 ] Это также соответствует определению достижения определения : в этом контексте анализ восходящего потока был методом, используемым для демонстрации необходимости достижения определения. Дополнительные методы позволяют проводить более комплексный анализ более глубоко переплетенных или сложных проблем потока управления, например, с различными формами циклов. [ 4 ]
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Jump up to: а б Харрольд, Мэри Джин (осень 2009 г.). «Базовый анализ» (PDF) . Технологический колледж Джорджии по информатике . CS 6340: Анализ и тестирование программного обеспечения. Атланта, Джорджия, США: Технологический институт Джорджии . Архивировано (PDF) из оригинала 20 июня 2020 г. Проверено 12 июня 2020 г.
- ^ Jump up to: а б Ахо, Альфред Вайно ; Лам, Моника Син-Линг ; Сетхи, Рави ; Уллман, Джеффри Дэвид (2006). Составители: принципы, методы и инструменты (2-е изд.). Бостон, Массачусетс, США: Аддисон-Уэсли . ISBN 0-321-48681-1 . OCLC 70775643 .
- ^ Коре, Аамод (2020). «Использование, открытое вверх» . Торонто, Онтарио, Канада: Департамент компьютерных наук Университета Торонто . Архивировано из оригинала 20 июня 2020 г. Проверено 12 июня 2020 г.
- ^ Jump up to: а б Бергеретти, Жан-Франсуа; Карре, Бернар А. (2 января 1985 г.). «Анализ информационных потоков и потоков данных программ while» . Транзакции ACM в языках и системах программирования . 7 (1). Ассоциация вычислительной техники : 37–61. дои : 10.1145/2363.2366 . S2CID 19682896 . Архивировано из оригинала 20 июня 2020 г. Проверено 20 июня 2020 г.