Трансляция в ассемблер
Трансляция программы в ассемблер несколько упрощает конструирование компилятора. Однако, такой подход удлиняет технологическую цепочку выполнения программы, так как объектная программа, порожденная компилятором, должна быть впоследствии обработана ассемблером, а также редактором связей и загрузчиком.
У трансляции в ассемблер есть несколько ощутимых преимуществ:
уровень ассемблера все-таки выше, чем у машинного кода; поэтому при трансляции в ассемблер программисту не приходится возиться с некоторыми утомительными техническими деталями, например, ассемблер берет на себя разрешение операторов безусловного перехода на еще неопределенные метки (переходы вперед), распределение памяти под данные, расчет длин переходов и т.п.
использование ассемблера позволяет отследить целый ряд ошибок, которые могут возникнуть при генерации кода (например, неправильная мнемоника команды); при генерации в машинные коды отловить такие ошибки значительно труднее
порождаемый текст на ассемблере значительно читабельней, чем машинный код; это может помочь при отладке компилятора.
При генерации кода для платформы .NETу нас, в сущности, и нет никаких других возможностей, так какMSILпредставляет собой высокоуровневый ассемблер, максимально абстрагированный от конкретных целевых платформ.
- Лекция 3. Основы компиляторов
- Основные задачи компиляторов
- Интерпретатор
- Компилятор
- Объектная программа
- Трансляция в ассемблер
- T-диаграммы
- Методики создания компилятора
- Метод раскрутки
- Кросс-транслятор
- Виртуальная машина
- Компиляция "на лету"
- Фазы компиляции
- Лексический анализ
- Синтаксический анализ
- Видозависимый анализ
- Оптимизация кода
- Генерация кода
- Внешний и внутренний интерфейсы
- Просмотры
- Техника "заплат"
- Литература к лекции