Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
kratkie_otvety_ekzamen_CP_2011-12.docx
Скачиваний:
19
Добавлен:
14.04.2019
Размер:
132.13 Кб
Скачать

51. Трансляторы и интерпретаторы - общая схема работы.

Практически во всех трансляторах (и в компиляторах, и в интерпретаторах) в том или ином виде присутствует большая часть перечисленных ниже процессов:

§ лексический анализ

§ синтаксический анализ

§ семантический анализ

§ генерация внутреннего представления программы

§ оптимизация

§ генерация объектной программы.

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

Транслятор — это программа, которая переводит входную программу на исходном (входном) языке в эквивалентную ей выходную программу на результирующем (выходном) языке. В этом определении слово «программа» встречается три раза, и это не ошибка и не тавтология. В работе транслятора, действительно, участвуют всегда три программы.

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

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

Интерпретатор — это программа, которая воспринимает входную программу на исходном языке и выполняет ее.

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

Формат командных операторов

Командные операторы записываются в следующем формате:

<Метка>: Префикс Мнемоника <Операнд1,<Операнд2>> <;Комментарий>

где угловые скобки обозначают необязательные поля.

Рассмотрим назначение отдельных полей данного формата:

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

Префикс заставляет ассемблер сформировать один из префиксных байт - блокировки LOCK или повторения REP, который непосредствен­но предшествует команде.

Мнемоника кода операции или директива представляет собой заранее опреде­ленное и неизменяемое имя, которое идентифицирует тип генерируе­мой машинной команды.

Операнды задают адреса данных или сами данные, необходимые в данной команде.

Комментарий предназначен только для документирования прог­раммы. Он всегда начинается с точки с запятой.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]