![]() |
s4g
0.9.2
высокоуровневый, императивный, процедурный, встраиваемый, скриптовый язык программирования общего назначения, написанный на C++.
|
виртуальная машина Подробнее...
#include <s4g_vm.h>
Открытые типы | |
| typedef void(s4g_VM::* | opfunc) () |
| тип функции исполняющей байт код | |
Открытые члены | |
| void | clear () |
| очистка рабочих данных Подробнее... | |
| int | run (s4g_Stack< s4g_Command > *pCommands, s4g_Table *pCurrTable) |
| запуск работы машины с установкой стека команд и окружения, нулевые параметры установят предыдущие значения | |
| void | returnPrevState () |
| возвращаем предыдущее состояние машины, в случае когда функция отработала все свои команды | |
| bool | precondStackExe (int iCountExpected, const char *szFuncName) |
| проверка на наличие необходимого количества элементов в стеке исполнения iCountExpected, если нет тогда выдаем ошибку | |
| const char * | getCurrExeFile (char *szStr=0) |
| возвращает текущий файл код которого выполняется | |
| int | getCurrExeStr (char *szStr=0) |
| возвращает текущий номер строки в файле код которого выполняется | |
| const char * | getCurrExeFunc (char *szStr=0) |
| возвращает текущию функцию которая выполняется | |
| const char * | stackTrace () |
| возвращает строку с трассировкой стека | |
| void | setError (const char *szStr) |
| установка текста ошибки, прекращение работы машины | |
| const char * | getError () |
| возвращает текст ошибки | |
| bool | hasError () |
| установлена ли ошибка машине? | |
| int | getStackArgsSize () |
| возвращает количество аргументов вызываемой С++ функции | |
| s4g_Variable * | getArgFromStackArgs (int iNum) |
| возвращает аргумент из стека аргументов для вызываемой C++ функции, по номеру (1 ... N) | |
| void | pushStackExecute (s4g_Variable *pVar) |
| запихнуть в стек исполнения значение | |
| void | popStackExecute (int iCount=1) |
| вытолкнуть со стека исполнения данные | |
| s4g_Variable * | getStackExecute (int iNum) |
| возвращает переменную со стека исполнения | |
| int | getSizeStackExecute () |
| возвращает размер стека исполнения | |
| S4G_TYPE | getTypeLastCall () |
| возвращает тип последней исполняемой/исполненной функции | |
Функции для исполнения байт кода | |
| void | comObjectNew () |
| S4G_VM_COMMAND_OBJECT_NEW | |
| void | comVarNew () |
| S4G_VM_COMMAND_VAR_NEW | |
| void | comFetch () |
| S4G_VM_COMMAND_FETCH | |
| void | comFetchIdx () |
| S4G_VM_COMMAND_FETCH_IDX | |
| void | comAccess () |
| S4G_VM_COMMAND_ACCESS | |
| void | comStore () |
| S4G_VM_COMMAND_STORE | |
| void | comArrayNew () |
| S4G_VM_COMMAND_ARRAY_NEW | |
| void | comClassNew () |
| S4G_VM_COMMAND_CLASS_NEW | |
| void | comClassParentAdd () |
| S4G_VM_COMMAND_CLASS_PARENT_ADD | |
| void | comClassVarAdd () |
| S4G_VM_COMMAND_CLASS_VAR_ADD | |
| void | comClassMethodAdd () |
| S4G_VM_COMMAND_CLASS_METHOD_ADD | |
| void | comTableNew () |
| S4G_VM_COMMAND_TABLE_NEW | |
| void | comTableInsert () |
| S4G_VM_COMMAND_TABLE_INSERT | |
| void | comTableAppend () |
| S4G_VM_COMMAND_TABLE_APPEND | |
| void | comHalt () |
| S4G_VM_COMMAND_HALT | |
| void | comDoubleTop () |
| S4G_VM_COMMAND_DOUBLE_TOP | |
| void | comPush () |
| S4G_VM_COMMAND_PUSH | |
| void | comPop () |
| S4G_VM_COMMAND_POP | |
| void | comPrecall () |
| S4G_VM_COMMAND_PRECALL | |
| void | comCall () |
| S4G_VM_COMMAND_CALL | |
| void | comArithmeticAdd () |
| S4G_VM_COMMAND_ARITHMETIC_ADD | |
| void | comArithmeticSub () |
| S4G_VM_COMMAND_ARITHMETIC_SUB | |
| void | comArithmeticMul () |
| S4G_VM_COMMAND_ARITHMETIC_MUL | |
| void | comArithmeticDiv () |
| S4G_VM_COMMAND_ARITHMETIC_DIV | |
| void | comArithmeticMod () |
| #S4G_VM_COMMAND_ARITHMETIC_MOD | |
| void | comJump () |
| S4G_VM_COMMAND_JUMP | |
| void | comJumpZero () |
| S4G_VM_COMMAND_JZ | |
| void | comJumpNonZero () |
| S4G_VM_COMMAND_JNZ | |
| void | comLogicNeqt () |
| S4G_VM_COMMAND_LOGIC_NEQT | |
| void | comLogicEq () |
| S4G_VM_COMMAND_LOGIC_EQ | |
| void | comLogicNeq () |
| S4G_VM_COMMAND_LOGIC_NEQ | |
| void | comLogicGe () |
| S4G_VM_COMMAND_LOGIC_GE | |
| void | comLogicLe () |
| S4G_VM_COMMAND_LOGIC_LE | |
| void | comLogicGt () |
| S4G_VM_COMMAND_LOGIC_GT | |
| void | comLogicLt () |
| S4G_VM_COMMAND_LOGIC_LT | |
| void | comLogicNot () |
| S4G_VM_COMMAND_LOGIC_NOT | |
| void | comLogicEqt () |
| S4G_VM_COMMAND_LOGIC_EQT | |
| void | comBitXor () |
| #S4G_VM_COMMAND_BIT_XOR | |
| void | comBitNot () |
| #S4G_VM_COMMAND_BIT_NOT | |
| void | comBitShiftR () |
| #S4G_VM_COMMAND_BIT_SHIFTR | |
| void | comBitShiftL () |
| #S4G_VM_COMMAND_BIT_SHIFTL | |
| void | comBitAnd () |
| #S4G_VM_COMMAND_BIT_AND | |
| void | comBitOr () |
| #S4G_VM_COMMAND_BIT_OR | |
| void | comBlockNew () |
| S4G_VM_COMMAND_BLOCK_NEW | |
| void | comBlockDel () |
| S4G_VM_COMMAND_BLOCK_DEL | |
| void | comTopContextClear () |
| S4G_VM_COMMAND_TOPCONTEXT_CLEAR | |
| void | comPreincr () |
| S4G_VM_COMMAND_PREINCR | |
| void | comPostincr () |
| S4G_VM_COMMAND_POSTINCR | |
| void | comPredecr () |
| S4G_VM_COMMAND_PREDECR | |
| void | comPostdecr () |
| S4G_VM_COMMAND_POSTDECR | |
Открытые атрибуты | |
| opfunc | m_aOpFunc [S4G_VM_COMMAND_LAST] |
| массив функций исполняющих байт код (сделано для быстрого доступа) | |
Защищенные данные | |
| bool | m_canExecute |
| можно ли выполнять код ( run при удачном запуске установит ее в true) | |
| S4G_TYPE | typeLastCallFunc |
| тип последней исполняемой/исполненной функции | |
| s4g_Stack< s4g_Command > * | m_pCurrArrCommand |
| текущий указатель на стэк команд в исполнении | |
| ID | m_idCurrPos2ArrCommand |
| текущее положение в текущем стеке исполнения m_pCurrArrCommand. | |
| s4g_Table * | m_pGtable |
| глобальное пространство имен _g. | |
| s4g_Variable * | m_pGvar |
| переменная хранящая в себе глобальное пространство имен | |
| s4g_Table * | m_pCurrTable |
| текущее установленное пространство имен, если выполняется функция то пространство имен функции | |
| s4g_Stack< s4g_Variable *, S4G_VM_MAX_SIZE_STACK_EXE > | m_oStackExecute |
| стек выполнения | |
| String | m_sStackTrace |
| строка для трассировки стека | |
| int | m_iError |
| есть ли ошибка? -1 есть, остальное все в норме | |
| char | m_szError [1024] |
| строка ошибки | |
| s4g_Command * | m_pCurrCommand |
| текущая команда с данными | |
| S4G_VM_COMMAND | m_vm_command |
| текущая команда машины | |
| s4g_Variable * | pVarCurrArg |
| аргумент текущей команды | |
| s4g_Stack< s4g_CallData * > | m_aStackBloks |
| стэк блоков с сохраненным предыдущим состоянием | |
| int | m_iCountCurrOpenBlocks |
| количество текущих открытых блоков, именно текущих, потому что нужно их котролировать и внутри функции | |
| s4g_Stack< s4g_Variable *, 64 > | m_aStackArgs |
| стек аргументов вызванной в даннй момент Си функции | |
| s4g_Stack< s4g_CallData * > | m_aStackCall |
| стэк вызовов с сохраненным предыдущим состоянием | |
| s4g_Stack< s4g_PrecallData *, S4G_MAX_CALL+1 > | m_aStackSizesStackExe |
| хранит размер стека исполнения на момент добавления значения Подробнее... | |
| MemAlloc< s4g_CallData, S4G_RESERVE_BLOCKS_MEM > | m_oMemCallData |
| резерваци памяти для s4g_CallData. | |
виртуальная машина
| void s4g_VM::clear | ( | ) |
очистка рабочих данных
|
protected |
хранит размер стека исполнения на момент добавления значения