Вход для пользователей:

Статьи раздела

Статьи

Генерация программного кода

Опубликовано: 18-04-2013 23:04

компьютерная помощьВажным этапом написания качественной и эффективной компьютерной программы является грамотное выполнение генерации программного кода, или кодогенерации. Это значимая часть процесса компиляции, при реализации которой кодогенератор (специальная часть компилятора) проводит конвертацию программы в последовательность инструкций, которые могут выполняться машиной. Генерироваться может только та программа, которая считается синтаксически грамотной. При осуществлении кодогенерации могут выполняться некоторые машинно-независимые оптимизации. В большинстве случаев генератор является частью нескольких компиляторов, и он может генерировать промежуточный код.

Входная часть кодогенератора получает дерево разбора, которое часто называется абстрактным синтаксическим деревом. Впоследствии оно преобразуется в логическую линейную последовательность, состоящую из инструкций промежуточного языка.

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

Важно отметить, что прочие этапы компиляции могут не относиться к процессу генерации кода, и зависит это только от того, насколько значимыми будут вносимые программистом изменения.

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