logo
Материал / 03

Кросс-транслятор

Пусть у нас есть два компьютера: компьютер Mс языком ассемблераAи компьютерM1с языком ассемблераA1.Кроме того, предположим, что имеется компиляторKA1: PA1, а сам компьютерM по каким-то причинам не доступен либо пока еще не существует компиляторK­A­: PA.Нас интересует компиляторK­A­: LA. В такой ситуации мы можем использоватьM1в качествеинструментальноймашины и написать компиляторKP: LA, который принято называтькросс-транслятором (cross-compiler). Как только машинаMстанет доступной, мы сможем перенестиKPнаMи "раскрутить" его с помощьюKA. Понятно, что это решение достаточно трудоемко, поскольку могут возникнуть проблемы при переносе, например, из-за различий операционных систем.

Под переносимой (portable)программой понимается программа, которая может без перетрансляции выполняться на нескольких (по меньшей мере, на двух) платформах. В связи с этим возникает вопрос о переносимости объектных программ, создаваемых компилятором. Компиляторы, созданные по методикам, рассмотренным выше, порождаютнепереносимые(non-portable) объектные программы. Поскольку компилятор, в конечном итоге, является программой, то мы можем говорить и о переносимых компиляторах. Одним из способов получения переносимых объектных программ является генерация объектной программы на языке более высокого уровня, чем язык ассемблера. Такие компиляторы иногда называютконвертерами(converter).