Gorilla.Script.Bytecode

Unit Gorilla.Script.Bytecode.pas

Classes

Records

Enumerations

  • enum  TGorillaScriptByteCode  = ( GS_BC_NONE, GS_BC_DELIM, GS_BC_HALT, GS_BC_RETURN, GS_BC_JUMP, GS_BC_JUMP_ON_ZERO, GS_BC_JUMP_ON_NOTZERO, GS_BC_GET_STACKVALUE, GS_BC_SET_STACKVALUE, GS_BC_ADD, GS_BC_SUB, GS_BC_MUL, GS_BC_DIV, GS_BC_MOD, GS_BC_POW, GS_BC_LT, GS_BC_LEQ, GS_BC_GT, GS_BC_GEQ, GS_BC_EQ, GS_BC_NEQ, GS_BC_NOT, GS_BC_AND, GS_BC_OR, GS_BC_XOR, GS_BC_BITAND, GS_BC_BITOR, GS_BC_BITXOR, GS_BC_SHL, GS_BC_SHR, GS_BC_INC, GS_BC_DEC, GS_BC_ADDRESSOF, GS_BC_IN, GS_BC_AS, GS_BC_COPY, GS_BC_COPYTOP, GS_BC_RANGECHECK, GS_BC_TRY, GS_BC_EXCEPT, GS_BC_FINALLY, GS_BC_FOR_LOOP, GS_BC_WHILE_LOOP, GS_BC_REPEAT_LOOP, GS_BC_CASE, GS_BC_GET_TYPE, GS_BC_GET_METHOD, GS_BC_GET_FIELD, GS_BC_SET_FIELD, GS_BC_GET_CONST, GS_BC_GET_NATIVE_PROPERTY, GS_BC_SET_NATIVE_PROPERTY, GS_BC_CALL, GS_BC_READ_ACC_ARR, GS_BC_WRITE_ACC_ARR, GS_BC_ISTYPE, GS_BC_NEWSET, GS_BC_FLIP, GS_BC_PUSH, GS_BC_POP, GS_BC_STACKPOS, GS_BC_BOOL, GS_BC_ORD_1BYTE, GS_BC_ORD_U1BYTE, GS_BC_ORD_2BYTE, GS_BC_ORD_U2BYTE, GS_BC_ORD_4BYTE, GS_BC_ORD_U4BYTE, GS_BC_ORD_8BYTE, GS_BC_ORD_U8BYTE, GS_BC_FLT_4BYTE, GS_BC_FLT_8BYTE, GS_BC_STRING, GS_BC_ARRAY, GS_BC_POINTER, GS_BC_OBJECT, GS_BC_CLASS, GS_BC_INTERFACE, GS_BC_METHOD, GS_BC_STRUCT, GS_BC_ENUM, GS_BC_SET, GS_BC_VARIANT, GS_BC_NULL, GS_BC_NOTSET, GS_BC_UNDEFINED, GS_BC_DEBUG ) ;
  • enum  TGSSymbolKind  = ( gsUnknown, gsVar, gsFunc, gsType, gsEnum, gsSet, gsIntf, gsStruct, gsClass, gsUnit ) ;
  • enum  TGSFuncNativeKind  = ( fnkGlobal, fnkClass, fnkStruct, fnkIntf ) ;

Constants

  • const GORILLA_SCRIPT_MAGIC : Cardinal = ;
  • const GORILLA_SCRIPT_VERSION : Cardinal = ;
  • const GS_BYTECODE_TYPES : TGorillaScriptByteCodes = ;
  • const GS_NAME_THIS : TGSName = ;
  • const GS_NAME_RESULT : TGSName = ;

Mics. types

  • type PGSBlock = pointer to TGSBlock;
  • type PGSValue = pointer to TGSValue;
  • type PGSCode = pointer to TGSCode;
  • type PGSSymbol = pointer to TGSSymbol;
  • type PGSSymbolID = pointer to TGSSymbolID;
  • type PGSVar = pointer to TGSVar;
  • type PGSFuncNative = pointer to TGSFuncNative;
  • type PGSFunc = pointer to TGSFunc;
  • type PGSType = pointer to TGSType;
  • type PGSEnumValue = pointer to TGSEnumValue;
  • type PGSEnum = pointer to TGSEnum;
  • type PGSSet = pointer to TGSSet;
  • type PGSInterface = pointer to TGSInterface;
  • type PGSStruct = pointer to TGSStruct;
  • type PGSClass = pointer to TGSClass;
  • type PGSUnit = pointer to TGSUnit;
  • type PGSProgram = pointer to TGSProgram;
  • type TGSName = array  [0..255]  of Byte;

TGorillaScriptByteCode

enum TGorillaScriptByteCode = ( GS_BC_NONE, GS_BC_DELIM, GS_BC_HALT, GS_BC_RETURN, GS_BC_JUMP, GS_BC_JUMP_ON_ZERO, GS_BC_JUMP_ON_NOTZERO, GS_BC_GET_STACKVALUE, GS_BC_SET_STACKVALUE, GS_BC_ADD, GS_BC_SUB, GS_BC_MUL, GS_BC_DIV, GS_BC_MOD, GS_BC_POW, GS_BC_LT, GS_BC_LEQ, GS_BC_GT, GS_BC_GEQ, GS_BC_EQ, GS_BC_NEQ, GS_BC_NOT, GS_BC_AND, GS_BC_OR, GS_BC_XOR, GS_BC_BITAND, GS_BC_BITOR, GS_BC_BITXOR, GS_BC_SHL, GS_BC_SHR, GS_BC_INC, GS_BC_DEC, GS_BC_ADDRESSOF, GS_BC_IN, GS_BC_AS, GS_BC_COPY, GS_BC_COPYTOP, GS_BC_RANGECHECK, GS_BC_TRY, GS_BC_EXCEPT, GS_BC_FINALLY, GS_BC_FOR_LOOP, GS_BC_WHILE_LOOP, GS_BC_REPEAT_LOOP, GS_BC_CASE, GS_BC_GET_TYPE, GS_BC_GET_METHOD, GS_BC_GET_FIELD, GS_BC_SET_FIELD, GS_BC_GET_CONST, GS_BC_GET_NATIVE_PROPERTY, GS_BC_SET_NATIVE_PROPERTY, GS_BC_CALL, GS_BC_READ_ACC_ARR, GS_BC_WRITE_ACC_ARR, GS_BC_ISTYPE, GS_BC_NEWSET, GS_BC_FLIP, GS_BC_PUSH, GS_BC_POP, GS_BC_STACKPOS, GS_BC_BOOL, GS_BC_ORD_1BYTE, GS_BC_ORD_U1BYTE, GS_BC_ORD_2BYTE, GS_BC_ORD_U2BYTE, GS_BC_ORD_4BYTE, GS_BC_ORD_U4BYTE, GS_BC_ORD_8BYTE, GS_BC_ORD_U8BYTE, GS_BC_FLT_4BYTE, GS_BC_FLT_8BYTE, GS_BC_STRING, GS_BC_ARRAY, GS_BC_POINTER, GS_BC_OBJECT, GS_BC_CLASS, GS_BC_INTERFACE, GS_BC_METHOD, GS_BC_STRUCT, GS_BC_ENUM, GS_BC_SET, GS_BC_VARIANT, GS_BC_NULL, GS_BC_NOTSET, GS_BC_UNDEFINED, GS_BC_DEBUG ) ;

Defining byte operational codes for compiling and execution mode.

Remarks

The basic command structure is:

OPERATION[(GS_BC_STACKVALUE (GS_BC_BOOL|GS_BC_ORD_1BYTE|GS_BC_ORD_2BYTE|...|GS_BC_STRUCT))] DELIMITER OPERATION GS_BC_CONST GS_BC_BOOL|GS_BC_ORD_1BYTE|...|GS_BC_UNDEFINED [ [NUMBER OF BYTES] ] [...NUMBER OF BYTES...] DELIMITER

The count indicator is used differently: 1) number of stack parameter used 2) number of bytes for data supplied

For example: (<!-- ... --> means the operation doing this internally)

GS_BC_ADD GS_BC_CONST GS_BC_ORD_4BYTE 123 GS_BC_STACKVALUE GS_BC_ORD_4BYTE DELIM

TGSValue

Fields

Methods

TGSFunc

Fields

Methods