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

Семантика и система команд


Семантика и система команд

Приведем некоторые примеры групп команд виртуальной Смолток-машины.

1) Проталкивание в стек переменных экземпляра-получателя. Переменные экземпляра фиксируются для каждого экземпляра, и в каждом объекте для них отводится область памяти. Данная команда проталкивает в стек считанные переменные экземпляра, в частности получателя.

Байт-коды 0-15, 128:

0-15  [0000iiii]            Помещение в стек переменной-экземпляра получателя с номером #iiii

128  [10000000]  [jjkkkkkk]  Помещение в стек (переменной экземпляра получателя, временной переменной, литерала, глобальной переменной, указываемой литералом) [jj] с номером #kkkkkk.

2)     Проталкивание в стек временной переменной. Временные переменные создаются в момент вызова метода.

Байт-коды 16-31, 128:

16-31      [0001iiii]      Помещение в стек временной переменной с номером #iiii

3)     Проталкивание символов в стек. Символ - это селектор сообщения или константа с объектным указателем.

Байт-коды 32-63, 128

32-63      [001iiiii]       Помещение в стек литерала с номером #iiiii

4)     Вызов метода с использованием селектора сообщения, находящегося в области литералов. Команда производит поиск селектора сообщения, начиная со словаря класса получателя. Если поиск успешен, то производится вызов соответствующего метода.

Байт-коды 131, 132, 134, 208-255

5)     Помещение в стек активного контекста. Команда помещает в поля текущего контекста значения регистров и затем помещает в стек указатель этого контекста.

Байт-код 137.

6)     Команды перехода и условного перехода.

Байт-коды 144-175

144-151  [10010iii]     Переход по адресу iii+1

152-159  [10011iii]     Выталкивание из стека, переход по адресу iii+1 при значении false вытолкнутой вершины

160-167  [10100iii] [jjjjjjjj]     Переход по адресу (iii-4)*256+jjjjjjjj

7)     Посылка заявки на вычисление. Команда реализует арифметические операции "+" и "-". Если получатель не является целым числом, то выполняются действия, аналогичные обычной посылке заявки.

Байт-коды 192-207

192-207  [1100iiii]      Посылка специальной заявки #iiii




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