Интернет магазин китайских планшетных компьютеров



Компьютеры - Кодогенерация - Задачи генератора кода

22 января 2011


Оглавление:
1. Кодогенерация
2. Задачи генератора кода
3. Генерация кода во время выполнения



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

Некоторые задачи, которые обычно решают сложные генераторы кода:

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

Выбор инструкций обычно выполняется рекурсивным обходом абстрактного синтаксического дерева, в этом случае сравниваются части конфигураций дерева с шаблонами; например, дерево W:=ADD) может быть преобразовано в линейную последовательность инструкций рекурсивной генерации последовательностей t1:=X и t2:=MUL, а затем инстркуцией ADD W,t1,t2.

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



Просмотров: 2647


<<< Код операции