Элементы перечислений |
---|
S4G_VM_COMMAND_HALT | остановить текущее выполнение
|
S4G_VM_COMMAND_DOUBLE_TOP | поместить вершину стека на вершину, то есть -2 и -1 идентичны (не копирует!)
|
S4G_VM_COMMAND_OBJECT_NEW | создать объект класса, класс берет -1 из стека и выталкивает, на стек ложит объект класса
|
S4G_VM_COMMAND_VAR_NEW | создать и положить на вершину стека значение переменной, имя берет из аргумента
|
S4G_VM_COMMAND_ARRAY_NEW | создать массив, поместить в него все элементы со стека (после этого все элементы будут вытолкнуты со стека), количество передает в аргументе, и оставить его на стеке
|
S4G_VM_COMMAND_TABLE_NEW | создать таблицу и положить на вершину стека
|
S4G_VM_COMMAND_TABLE_INSERT | добавить в таблицу, которая -2, -1 элемент со стека, если есть аргумент то значит это имя для этого поля, -1 выталкивает
|
S4G_VM_COMMAND_TABLE_APPEND | добавить новый (null) элемент в конец таблицы, которая -1, выталкивает таблицу, ложит новый элемент на вершину
|
S4G_VM_COMMAND_CLASS_NEW | создать пустой класс и положить его на стек, имя в аргументе
|
S4G_VM_COMMAND_CLASS_PARENT_ADD | добавить родителя (-1) к к классу (-2), после pop(1)
|
S4G_VM_COMMAND_CLASS_VAR_ADD | создать переменную класса, имя в аргументе, -1 сам класс
|
S4G_VM_COMMAND_CLASS_METHOD_ADD | создать метод, имя в аргументе, -1 - функция-аргумент, -2 сам класс
|
S4G_VM_COMMAND_FETCH | положить на вершину стека значение переменной, имя переменной берется из аргумента, поиск осуществляется во всех доступных контекстах
|
S4G_VM_COMMAND_FETCH_IDX | ложит на вершину стека переменную из контекста, из аргумента извлеваются: номер контекста относительно верха ((UINT)arg) & 0xFFFF, порядковый номер переменной в контексте (((UINT)arg) & 0xFFFF) >> 16.
|
S4G_VM_COMMAND_ACCESS | получить значение из объекта (таблица, массив, объект класса, строка), который должен содержать другие переменные
|
S4G_VM_COMMAND_STORE | сохранить в переменной -2 значение из -1, затем -1 выталкивает
|
S4G_VM_COMMAND_PUSH | положить на вершину стека
|
S4G_VM_COMMAND_POP | удалить значение с вершины стека
|
S4G_VM_COMMAND_ARITHMETIC_ADD | (-2) + (-1), оба выталкиваются, на стек ложится результат
|
S4G_VM_COMMAND_ARITHMETIC_SUB | (-2) - (-1), оба выталкиваются, на стек ложится результат
|
S4G_VM_COMMAND_ARITHMETIC_MUL | (-2) * (-1), оба выталкиваются, на стек ложится результат
|
S4G_VM_COMMAND_ARITHMETIC_DIV | (-2) / (-1), оба выталкиваются, на стек ложится результат
|
S4G_VM_COMMAND_PREINCR | преинкремент ++val (-1 элемент стека)
|
S4G_VM_COMMAND_PREDECR | предекремент – val (-1 элемент стека)
|
S4G_VM_COMMAND_POSTINCR | постинкремент val++ (-1 элемент стека)
|
S4G_VM_COMMAND_POSTDECR | постдекремент val++ (-1 элемент стека)
|
S4G_VM_COMMAND_PRECALL | сообщение о том что вскоре будет вызвана функция, записать в стек вызовов размер стека исполнения
|
S4G_VM_COMMAND_CALL | вызов функции, из precall бере количество аргументов (count_arg), забирает их со стека, берет переменную функции (count_arg-1) со стека и выталкивает ее
- Предупреждения
- Вызов функции все-равно возвращает значение (GCgetVarNull), эта обработка должна быть как в пустой функции, так и в той которая ничего не возвращает
|
S4G_VM_COMMAND_BLOCK_NEW | создание нового окружения для блока выражений (выделяется новый контекст куда сохраняются все созданные данные)
|
S4G_VM_COMMAND_BLOCK_DEL | удаление окружения блока выражений
|
S4G_VM_COMMAND_TOPCONTEXT_CLEAR | очистить верхний контекст
|
S4G_VM_COMMAND_JUMP | переход без условный
|
S4G_VM_COMMAND_JZ | переход условный, на вершине стека исполнения должно быть Zero (выталкивается со стека)
|
S4G_VM_COMMAND_JNZ | переход условный, на вершине стека исполнения должно быть Non-Zero (выталкивается со стека)
|
S4G_VM_COMMAND_LOGIC_NEQT | (-2) !== (неравенство без приведения типов) (-1), оба выталкиваются, на стек ложится результат
|
S4G_VM_COMMAND_LOGIC_EQ | (-2) == (-1), оба выталкиваются, на стек ложится результат
|
S4G_VM_COMMAND_LOGIC_NEQ | (-2) != (-1), оба выталкиваются, на стек ложится результат
|
S4G_VM_COMMAND_LOGIC_GE | (-2) >= (-1), оба выталкиваются, на стек ложится результат
|
S4G_VM_COMMAND_LOGIC_LE | (-2) <= (-1), оба выталкиваются, на стек ложится результат
|
S4G_VM_COMMAND_LOGIC_GT | (-2) > (-1), оба выталкиваются, на стек ложится результат
|
S4G_VM_COMMAND_LOGIC_LT | (-2) < (-1), оба выталкиваются, на стек ложится результат
|
S4G_VM_COMMAND_LOGIC_NOT | !(-1), выталкивается, на стек ложится результат (если значение было что-то похожее на true - значит false, иначе true)
|
S4G_VM_COMMAND_LOGIC_EQT | (-2) === (равенство без приведения типов) (-1), оба выталкиваются, на стек ложится результат
|
S4G_VM_COMMAND_LAST | размер всего массива команд
|