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 |
хранит размер стека исполнения на момент добавления значения