Объектно-ориентированное программирование.Язык Смолток

Виртуальная машина Смолток-. Байт-код



5. Виртуальная машина Смолток-80. Байт-код

Идея реализации персонального компьютера как специализированной машины с аппаратно реализованным языком высокого уровня была впервые воплощена Л.Петером Дойчем в Лисп-машине. В этом проекте используется система команд, в которой минимальной единицей является один байт, и поэтому ее называют байт-кодом.

В байт-коде имеется тенденция реализовывать все команды по возможности в одном байте (при высокой частоте выполнения команд), что позволяет создавать компактный объектный код.

Все это нужно, во-первых, для того, чтобы можно было реализовать специальный Смолток-процессор. Дело в том, что Смолток – это интерпретируемая система, и для повышения быстродействия очень хорошо было бы создать интерпретатор на аппаратном уровне, благо язык Смолток очень прост. Во-вторых, речь идет об "аппаратно-независимом" объектном коде Смолток-команд (как бы это неожиданно ни выглядело). Представьте себе системы, работающие на различных программных и аппаратных платформах, но могущие выдавать эквивалентные объектные коды. Тогда мы можем говорить о полной переносимости программ даже без использования всяческих кросс-систем. Для всего этого и существует модель системы Смолток, называемая виртуальной Смолток-машиной.

Виртуальная машина Смолток-80 выполняет три функции:

1) Функция интерпретации. Интерпретатор считывает команды языка (байт-код) и выполняет их.

2)     Управление объектами. Блок управления объектами создает необходимые объекты и передает их интерпретатору, а ставшие ненужными объекты собирает и использует для дальнейшей работы.

3)     Система базовых операций. В нее входят операции ввода-вывода, управления процессами и другие базовые операции. В системе также регистрируются в качестве элементарных методов (primitive method - примитивы) те операции, которые нельзя реализовать на самом Смолтоке (или их реализация неэффективна) и которые реализуются в виде программ вне системы Смолток-80.



Содержание раздела