75
2. Программная имитация (программная интерпретация). Вместо того чтобы
транслировать программы на языке высокого уровня в эквивалентные про
граммы на машинном языке, можно смоделировать с помощью программ,
выполняемых на хосткомпьютере, другой компьютер, для которого машин
ным языком будет данный язык высокого уровня. Для этого нужно сконстру
ировать набор программ на машинном языке хосткомпьютера, которые мо
делируют алгоритмы и структуры данных, необходимые для выполнения
программ на языке высокого уровня. Другими словами, при помощи про
грамм, выполняемых на хосткомпьютере, создается (моделируется) компь
ютер с машинным языком высокого уровня; этот компьютер мог бы быть
создан и аппаратным способом. Подобный метод называется программной
имитацией (или программной интерпретацией) компьютера с машинным
языком высокого уровня на хосткомпьютере. Для моделируемой машины
входными данными являются программы на языке высокого уровня. Основ
ная моделирующая программа, используя алгоритм интерпретации, ана
логичный представленному на рис. 2.2, декодирует и выполняет каждый
оператор заданной программы в соответствующей последовательности и про
изводит определяемый интерпретируемой программой вывод результиру
ющих данных.
В таком случае мы говорим, что хосткомпьютер создает виртуальный ком
пьютер, моделирующий язык высокого уровня. Когда хосткомпьютер вы
полняет программу на языке высокого уровня, сложно сказать, выполня
ется ли программа непосредственно аппаратной частью компьютера или
сначала она преобразуется в программу на машинном языке низкого уров
ня, а затем уже выполняется.
Отметим разницу между трансляцией и программной интерпретацией. И для
транслятора, и для программного интерпретатора входными данными являются
программы на языке высокого уровня. Но в результате трансляции получается
просто программа на объектном языке, которая затем должна выполняться аппа
ратным интерпретатором для этого объектного языка, а программный интерпре
татор непосредственно выполняет введенную программу. Если проследить за об
работкой введенной программы транслятором и программным интерпретатором,
то окажется, что транслятор обрабатывает операторы, входящие в программу, в по
рядке их фактического ввода, а интерпретатор следует логике управления выпол
няемой программы. Обычно транслятор обрабатывает каждый оператор только
один раз, в то время как интерпретатор может обрабатывать некоторые операторы
многократно (если, например, они являются частью цикла) или полностью игно
рировать другие (если на них не будет передано управление).
Но чистая трансляция и чистая интерпретация — это две крайности; на практи
ке обычно эти технологии используются вместе, дополняя друг друга. Чистая транс
ляция используется достаточно редко. Это происходит, как правило, если исход
ный язык достаточно близок к машинному языку, как в случае с ассемблером. Так
же редки случаи использования чистой интерпретации — она применяется для
интерактивных языков и для языков управления операционными системами. Чаще
всего для реализации языка на компьютере используется комбинированный под
ход, как показано на рис. 2.3. Сначала программа транслируется из своей исход
2.1. Структура и принципы работы компьютера