Высшие команды - PenzaStreetGames/Yo GitHub Wiki

Высшие команды виртуальной машины - команды, которые отвечают за предоставление интерфейса к ленте памяти, но не описывают реализацию обработки данных. Проще говоря, высшие команды - это специальный ассемблер, а низшие команды - это мнимые микросхемы процессора, выполняющие ассемблерные команды. Для обозначения высших команд используется английское слово либо словосочетание, а также трёхбуквенное сокращение, например Jump if, Jif.

Переходы

0 End (End)

  • Аргументов нет.
  • Заканчивает выполнение программы.

1 Jmp (Jump)

  • Аргументы:
    1. Ссылка для перехода
  • Безусловный переход

2 Jif (Jump if)

  • Аргументы:
    1. Ссылка для перехода
    2. Ссылка на условие
  • Условный переход

Работа с объектами

3 Crt (Create)

  • Аргументы:
    1. Объект для создания
  • Создаёт объект в памяти

4 Fnd (Find)

  • Аргументы:
    • Ссылка на строку с именем
  • Находит объект в пространстве имён

5 Eqt (Equating)

  • Аргументы:
    1. Ссылка на приёмник
    2. Ссылка на источник
  • Приравнивает два объекта

6 Len (Length)

  • Аргументы:
    1. Ссылка на объект
  • Возвращает размер объекта

7 Sob (Sub object)

  • Аргументы:
    1. Ссылка на объект
    2. Ссылка на подобъект
  • Считывает ячейку с относительным адресом

Ввод/вывод

8 Inp (Input)

  • Аргументов нет
  • Ввод данных

9 Out (Output)

  • Аргументы:
    1. Ссылка на вывод
  • Вывод данных

Работа со стеком

10 Psh (Push)

  • Аргументы:
    1. Ссылка на источник
  • Записывает ячейку в стек

11 Pop (Pop)

  • Аргументы:
    1. Ссылка на приёмник
  • Вынимает ячейку из стека

12 Cal (Call)

  • Аргументы:
    1. Ссылка на функцию
  • Вызывает функцию

13 Ret (Return)

  • Аргументов нет
  • Возвращает управление из функции

Логические операции

14 Not (Not)

  • Аргументы:
    1. Ссылка на аргумент
  • Логическое НЕ

15 And (And)

  • Аргументы:
    1. Ссылка на левый аргумент
    2. Ссылка на правый аргумент
  • Логическое И

16 Or (Or)

  • Аргументы:
    1. Ссылка на левый аргумент
    2. Ссылка на правый аргумент
  • Логическое ИЛИ

17 Xor (Xor)

  • Аргументы:
    1. Ссылка на левый аргумент
    2. Ссылка на правый аргумент Логическое ЛИБО

Арифметические операции

18 Neg (Negative)

  • Аргументы:
    1. Ссылка на аргумент
  • Инверсия

19 Add (Addition)

  • Аргументы:
    1. Ссылка на левый аргумент
    2. Ссылка на правый аргумент
  • Сложение

20 Inc (Increment)

  • Аргументы:
    1. Ссылка на аргумент
  • Увеличение на один

21 Dcr (Decrement)

  • Аргументы:
    1. Ссылка на аргумент
  • Уменьшение на один

22 Sub (Subtraction)

  • Аргументы:
    1. Ссылка на уменьшаемое
    2. Ссылка на вычитаемое
  • Вычитание

23 Mul (Multiplication)

  • Аргументы:
    1. Ссылка на левый множитель
    2. Ссылка на правый множитель
  • Умножение

24 Div (Division)

  • Аргументы:
    1. Ссылка на делимое
    2. Ссылка на делитель
  • Деление

25 Mod (Modulo)

  • Аргументы:
    1. Ссылка на делимое
    2. Ссылка на делитель
  • Остаток от деления

Операции сравнения

26 Eql (Equal)

  • Аргументы:
    1. Ссылка на левый аргумент
    2. Ссылка на правый аргумент
  • Сравнение на равенство

27 Grt (Great)

  • Аргументы:
    1. Ссылка на левый аргумент
    2. Ссылка на правый аргумент
  • Больше

28 Les (Less)

  • Аргументы:
    1. Ссылка на левый аргумент
    2. Ссылка на правый аргумент
  • Меньше

Прочее

29 Ничего Nop (No operation)

  • Аргументов нет
  • Ничего не делает