Книга: Системное программное обеспечение. Лабораторный практикум
Общий алгоритм генерации и оптимизации объектного кода
Общий алгоритм генерации и оптимизации объектного кода
Теперь рассмотрим общий вариант алгоритма генерации кода, который получает на входе дерево вывода (построенное в результате синтаксического разбора) и создает по нему фрагмент объектного кода результирующей программы.
Алгоритм должен выполнить следующую последовательность действий:
• построить последовательность триад на основе дерева вывода;
• выполнить оптимизацию кода методом свертки для линейных участков результирующей программы;
• выполнить оптимизацию кода методом исключения лишних операций для линейных участков результирующей программы;
• преобразовать последовательность триад в последовательность команд на языке ассемблера (полученная последовательность команд и будет результатом выполнения алгоритма).
Алгоритм преобразования триад в команды языка ассемблера – это единственная машинно-зависимая часть общего алгоритма. При преобразовании компилятора для работы с другим результирующим объектным кодом потребуется изменить только эту часть, при этом все алгоритмы оптимизации и внутреннее представление программы останутся неизменными.
В данной работе алгоритм преобразования триад в команды языка ассемблера предлагается разработать самостоятельно. В тривиальном виде такой алгоритм заменяет каждую триаду на последовательность соответствующих команд, а результат ее выполнения запоминается во временной переменной с некоторым именем (например TMPi, где i – номер триады). Тогда вместо ссылки на эту триаду в другой триаде будет подставлено значение этой переменной. Однако алгоритм может предусматривать и оптимизацию временных переменных.[8]
- Общие принципы генерации кода
- Синтаксически управляемый перевод
- Способы внутреннего представления программ
- Многоадресный код с неявно именуемым результатом (триады)
- Схемы СУ-перевода
- Общие принципы оптимизации кода
- Принципы оптимизации линейных участков
- Свертка объектного кода
- Исключение лишних операций
- Общий алгоритм генерации и оптимизации объектного кода
- Глава 5 Агрессивные формы кода и борьба с ними
- 10 Алгоритм работы с возражениями
- Стиль написания исходного кода
- CPC или CPM: показатель оптимизации № 11 – CPC как инновация компании Google
- 5.4. РЕКОМЕНДАЦИИ НАЧИНАЮЩИМ ПО СОСТАВЛЕНИЮ ОПИСАНИЙ АЛГОРИТМОВ И ЭВРОРИТМОВ
- Алгоритм составления эффективных рекламных сообщений
- Анализ CIL-кода
- Алгоритмическая вероятность
- Комментарии к алгоритму Тоома—Кука
- Алгоритмы хэширования
- 6.2.4. Общий доступ
- Исправление ранее написанного кода