Экономическая информатика-стр.351

Большая сложность в разработке компилятора по сравнению с интерпретатором с того же самого языка объясняется тем, что компиляция программы включает два действия: анализ, т.е. определение правильности записи исходной программы в соответствии с правилами построения языковых конструкций входного языка, и синтез - генерирование эквивалентной программы в машинных кодах. Трансляция методом компиляции требует неоднократного “просмотра” транслируемой программы, т.е. трансляторы-компиляторы являются многопроходными: при первом проходе они проверяют корректность синтаксиса языковых конструкций отдельных операторов независимо друг от друга, при последующем проходе - корректность синтаксических взаимосвязей между операторами и т.д.

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

Загрузочный модуль может иметь простую, оверлейную или динамическую структуру.

Модуль простой структуры состоит из единственного загрузочного модуля, сформированного редактором связей. Этот модуль перед исполнением целиком загружается в оперативную память и включает все необходимые для его работы команды. Модули простой структуры наиболее эффективны с точки зрения производительности, так как в ходе исполнения требуют минимального вмешательства управляющей программы ОС.