ВУЗ:
Составители:
11
2. Неоптимальность создаваемой объектной программы. Например, если
встречается текст:
А = (В + С);
Р = (В + С) + (Е + М);
компилятор мог бы построить более эффективный объектный код,
трансформировав программу следующим образом:
А = (В + С);
Р = А + (Е + М);
Однако однопроходный компилятор может утратить часть нужной
информации к тому времени, когда в тексте встретится
формула (Е + М).
3. Поскольку однопроходный компилятор должен полностью
размещаться в памяти, его реализация сопровождается повышенными
требованиями к ресурсу памяти, которые не всегда можно удовлетворить,
имея систему с ограниченным объемом памяти.
Для повышения эффективности выполнения объектной программы в
процесс компилирования может включаться фаза оптимизации. Блок
оптимизации легко встраивается в трехпроходный
компилятор, где
размещается, обычно, между синтаксическим анализатором и генератором
кода. На этой фазе постфиксный файл используется в качестве входных
данных и создается новый файл, содержащий постфиксную запись
эквивалентной программы с улучшенными характеристиками. Поскольку
блок оптимизации записывает свои выходные данные в формате
постфиксного файла, генератор кода не нуждается в изменении. На практике
возможность оптимизации предусматривается по желанию пользователя:
если необходимо, чтобы время компилирования было небольшим, блок
оптимизации игнорируется; если же требуется получить программу с
высокой скоростью выполнения, то после работы синтаксического
анализатора вызывается блок оптимизации.
Возможны и другие способы структурной организации компилятора. На
рис.1.3 показана структура двухпроходного компилятора, занимающая
11 2. Неоптимальность создаваемой объектной программы. Например, если встречается текст: А = (В + С); Р = (В + С) + (Е + М); компилятор мог бы построить более эффективный объектный код, трансформировав программу следующим образом: А = (В + С); Р = А + (Е + М); Однако однопроходный компилятор может утратить часть нужной информации к тому времени, когда в тексте встретится формула (Е + М). 3. Поскольку однопроходный компилятор должен полностью размещаться в памяти, его реализация сопровождается повышенными требованиями к ресурсу памяти, которые не всегда можно удовлетворить, имея систему с ограниченным объемом памяти. Для повышения эффективности выполнения объектной программы в процесс компилирования может включаться фаза оптимизации. Блок оптимизации легко встраивается в трехпроходный компилятор, где размещается, обычно, между синтаксическим анализатором и генератором кода. На этой фазе постфиксный файл используется в качестве входных данных и создается новый файл, содержащий постфиксную запись эквивалентной программы с улучшенными характеристиками. Поскольку блок оптимизации записывает свои выходные данные в формате постфиксного файла, генератор кода не нуждается в изменении. На практике возможность оптимизации предусматривается по желанию пользователя: если необходимо, чтобы время компилирования было небольшим, блок оптимизации игнорируется; если же требуется получить программу с высокой скоростью выполнения, то после работы синтаксического анализатора вызывается блок оптимизации. Возможны и другие способы структурной организации компилятора. На рис.1.3 показана структура двухпроходного компилятора, занимающая
Страницы
- « первая
- ‹ предыдущая
- …
- 9
- 10
- 11
- 12
- 13
- …
- следующая ›
- последняя »