На заключительном этапе трансляции происходит создание выполняемой программы на основе того, что было сделано СемА. Это этап обязательно включает генерацию кода и может также включать оптимизацию получившейся программы. Если подпрограммы транслировались отдельно или использовались библиотечные подпрограммы, то необходима заключительная стадия редактирования связей и загрузки, чтобы получить полностью пригодную для выполнения программу.
Оптимизация. Обычно СемА безразлична та часть кода, которая уже сгенерирована. Но такая фрагментация может привести к неэффективным кодам, так как обмен данными может проходить по быстрым регистрам, а СемА будет заново загружать переменные из оперативной памяти. Можно оптимизировать и однократное выполнение повторяющихся общих подвыражений, инвариантных операций из тела цикла, оптимизировать использование регистров, вычисления формул доступа к данным.
Генерация кода. После оптимизации получаем программу в оттранслированном внутреннем коде. Затем она должна быть преобразована в инструкции ассемблера или машинный код, или в какую-либо другую форму объектного кода, которая и станет результатом трансляции. Процесс генерации включает в себя определенное форматирование той информации, которая содержится во внутреннем представлении программы. Дале этот код может быть подвергнут обработке ассемблером или редактором связи.
Редактирование связей и загрузка. Это необязательный этап трансляции. В случае раздельной трансляции подпрограммы имеют почти законченный вид. На данном этапе подпрограммы объединяются в одну выполняемую программу и следует только наладить связи между подпрограммами, то есть определить те места, где имеются обращения к внешним данным и другим подпрограммам. Транслятор создает и помещает эти связи в присоединенных таблицах загрузчика. Загрузчик (или редактор связей) загружает различные фрагменты оттранслированного кода в память и использует присоединенные таблицы загрузчика для связывания этих фрагментов в единую программу, вставляя данные и адреса по мере надобности.
Похожие статьи:
|