Вверх открытое использование - Upwards exposed uses

Вверх открытое использование или же достижимое использование,[1] это концепция в теория компилятора что происходит в копирование распространения этап компиляции.[2]

Использует

Вовремя копирование распространения этап компиляция программы, экземпляры цели заменяются присвоениями их значений. Во время этого процесса компилятору необходимо понимать, к каким экземплярам цели осуществляется доступ, чтобы могла произойти соответствующая подстановка, связанная с концепцией достижение определения в достижении анализа.[3] Это делается с целью упрощения кода перед выполнением: если количество открываемых снизу вверх применений присваивания равно нулю, это не влияет на конечный результат кода и может быть безопасно удалено.[1] Это также полезно для повышения безопасности кода на этапах компиляции.[4]

Пример

Рассмотрим следующий псевдокод:

1 Икс = 12 у = z3 4 если Ложь:5     Икс = 06 еще:7     Икс = у + 2

Можно с уверенностью предположить, что линия 5 никогда не появится, о чем свидетельствует нулевое количество использований для этой точки, открываемых вверх. Поэтому это можно упростить:

1 у = z2 Икс = z + 2

Это приводит к конечному результату, который проще компилировать и более эффективно запускать.[2] Это также соответствует определению достижение определения: В этом контексте анализ восходящего потока был методом, используемым для демонстрации необходимости достижения определения. Дополнительные методы позволяют проводить более сложный анализ более тесно связанных или сложных задач потока управления, например, с различными формами циклов.[4]

Смотрите также

Рекомендации

  1. ^ а б Харролд, Мэри Джин (осень 2009 г.). «Базовый анализ» (PDF). Технологический институт Джорджии - Компьютерный колледж. CS 6340: Анализ и тестирование программного обеспечения. Атланта, Джорджия, США: Технологический институт Джорджии. В архиве (PDF) из оригинала 20.06.2020. Получено 2020-06-12.
  2. ^ а б Ахо, Альфред Вайно; Лам, Моника Син-Линг; Сетхи, Рави; Ульман, Джеффри Дэвид (2006). Компиляторы: принципы, методы и инструменты (2-е изд.). Бостон, Массачусетс, США: Эддисон-Уэсли. ISBN  0-321-48681-1. OCLC  70775643.
  3. ^ Коре, Аамод (2020). "Использование, направленное вверх". Торонто, Онтарио, Канада: Департамент компьютерных наук, Университет Торонто. В архиве из оригинала 20.06.2020. Получено 2020-06-12.
  4. ^ а б Бержеретти, Жан-Франсуа; Карре, Бернар А. (1985-01-02). "Анализ потока информации и данных в программах while". Транзакции ACM по языкам и системам программирования. Ассоциация вычислительной техники. 7 (1): 37–61. Дои:10.1145/2363.2366. В архиве из оригинала 20.06.2020. Получено 2020-06-20.