Кросс-транслятор
Пусть у нас есть два компьютера: компьютер Mс языком ассемблераAи компьютерM1с языком ассемблераA1.Кроме того, предположим, что имеется компиляторKA1: P→A1, а сам компьютерM по каким-то причинам не доступен либо пока еще не существует компиляторKA: P→A.Нас интересует компиляторKA: L→A. В такой ситуации мы можем использоватьM1в качествеинструментальноймашины и написать компиляторKP: L→A, который принято называтькросс-транслятором (cross-compiler). Как только машинаMстанет доступной, мы сможем перенестиKPнаMи "раскрутить" его с помощьюKA. Понятно, что это решение достаточно трудоемко, поскольку могут возникнуть проблемы при переносе, например, из-за различий операционных систем.
Под переносимой (portable)программой понимается программа, которая может без перетрансляции выполняться на нескольких (по меньшей мере, на двух) платформах. В связи с этим возникает вопрос о переносимости объектных программ, создаваемых компилятором. Компиляторы, созданные по методикам, рассмотренным выше, порождаютнепереносимые(non-portable) объектные программы. Поскольку компилятор, в конечном итоге, является программой, то мы можем говорить и о переносимых компиляторах. Одним из способов получения переносимых объектных программ является генерация объектной программы на языке более высокого уровня, чем язык ассемблера. Такие компиляторы иногда называютконвертерами(converter).
- Лекция 3. Основы компиляторов
- Основные задачи компиляторов
- Интерпретатор
- Компилятор
- Объектная программа
- Трансляция в ассемблер
- T-диаграммы
- Методики создания компилятора
- Метод раскрутки
- Кросс-транслятор
- Виртуальная машина
- Компиляция "на лету"
- Фазы компиляции
- Лексический анализ
- Синтаксический анализ
- Видозависимый анализ
- Оптимизация кода
- Генерация кода
- Внешний и внутренний интерфейсы
- Просмотры
- Техника "заплат"
- Литература к лекции