123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329 |
- using System;
- using System.Collections.Generic;
- using System.Text;
- namespace libLSL
- {
-
- enum lslVarType : byte
- {
- VARTYPE_VOID = 0,
- VARTYPE_INTEGER = 1,
- VARTYPE_FLOAT = 2,
- VARTYPE_STRING = 3,
- VARTYPE_KEY = 4,
- VARTYPE_VECTOR = 5,
- VARTYPE_ROTATION = 6,
- VARTYPE_LIST = 7
- }
- enum lslEventType : byte
- {
- EVENT_STATE_ENTRY = 0,
- EVENT_STATE_EXIT = 1,
- EVENT_TOUCH_START = 2,
- EVENT_TOUCH = 3,
- EVENT_TOUCH_END = 4,
- EVENT_COLLISION_START = 5,
- EVENT_COLLISION = 6,
- EVENT_COLLISION_END = 7,
- EVENT_LAND_COLLISION_START = 8,
- EVENT_LAND_COLLISION = 9,
- EVENT_LAND_COLLISION_END = 10,
- EVENT_TIMER = 11,
- EVENT_LISTEN = 12,
- EVENT_ON_REZ = 13,
- EVENT_SENSOR = 14,
- EVENT_NO_SENSOR = 15,
- EVENT_CONTROL = 16,
- EVENT_MONEY = 17,
- EVENT_EMAIL = 18,
- EVENT_AT_TARGET = 19,
- EVENT_NOT_AT_TARGET = 20,
- EVENT_AT_ROT_TARGET = 21,
- EVENT_NOT_AT_ROT_TARGET = 22,
- EVENT_RUN_TIME_PERMISSIONS = 23,
- EVENT_CHANGED = 24,
- EVENT_ATTACH = 25,
- EVENT_DATASERVER = 26,
- EVENT_LINK_MESSAGE = 27,
- EVENT_MOVING_START = 28,
- EVENT_MOVING_END = 29,
- EVENT_OBJECT_REZ = 30,
- EVENT_REMOTE_DATA = 31,
- EVENT_HTTP_RESPONSE = 32
- }
- enum lslOpcodes : byte
- {
- // No Operation
- OP_NOOP = 0x00,
- // Pops
- OP_POP = 0x01,
- OP_POPS = 0x02,
- OP_POPL = 0x03,
- OP_POPV = 0x04,
- OP_POPQ = 0x05,
- OP_POPARG = 0x06,
- OP_POPIP = 0x07,
- OP_POPBP = 0x08,
- OP_POPSP = 0x09,
- OP_POPSLR = 0x0A,
- // Dupes
- OP_DUP = 0x20,
- OP_DUPS = 0x21,
- OP_DUPL = 0x22,
- OP_DUPV = 0x23,
- OP_DUPQ = 0x24,
- // Stores
- OP_STORE = 0x30,
- OP_STORES = 0x31,
- OP_STOREL = 0x32,
- OP_STOREV = 0x33,
- OP_STOREQ = 0x34,
- OP_STOREG = 0x35,
- OP_STOREGS = 0x36,
- OP_STOREGL = 0x37,
- OP_STOREGV = 0x38,
- OP_STOREGQ = 0x39,
- // Loads
- OP_LOADP = 0x3A,
- OP_LOADSP = 0x3B,
- OP_LOADLP = 0x3C,
- OP_LOADVP = 0x3D,
- OP_LOADQP = 0x3E,
- OP_LOADGP = 0x3F,
- OP_LOADGSP = 0x40,
- OP_LOADGLP = 0x41,
- OP_LOADGVP = 0x42,
- OP_LOADGQP = 0x43,
- // Pushes
- OP_PUSH = 0x50,
- OP_PUSHS = 0x51,
- OP_PUSHL = 0x52,
- OP_PUSHV = 0x53,
- OP_PUSHQ = 0x54,
- OP_PUSHG = 0x55,
- OP_PUSHGS = 0x56,
- OP_PUSHGL = 0x57,
- OP_PUSHGV = 0x58,
- OP_PUSHGQ = 0x59,
- OP_PUSHIP = 0x5A,
- OP_PUSHBP = 0x5B,
- OP_PUSHSP = 0x5C,
- OP_PUSHARGB = 0x5D,
- OP_PUSHARGI = 0x5E,
- OP_PUSHARGF = 0x5F,
- OP_PUSHARGS = 0x60,
- OP_PUSHARGV = 0x61,
- OP_PUSHARGQ = 0x62,
- OP_PUSHE = 0x63,
- OP_PUSHEV = 0x64,
- OP_PUSHEQ = 0x65,
- OP_PUSHARGE = 0x66,
- // Numerics
- OP_ADD = 0x70,
- OP_SUB = 0x71,
- OP_MUL = 0x72,
- OP_DIV = 0x73,
- OP_MOD = 0x74,
- OP_EQ = 0x75,
- OP_NEQ = 0x76,
- OP_LEQ = 0x77,
- OP_GEQ = 0x78,
- OP_LESS = 0x79,
- OP_GREATER = 0x7A,
- OP_BITAND = 0x7B,
- OP_BITOR = 0x7C,
- OP_BITXOR = 0x7D,
- OP_BOOLAND = 0x7E,
- OP_BOOLOR = 0x7F,
- OP_NEG = 0x80,
- OP_BITNOT = 0x81,
- OP_BOOLNOT = 0x82,
-
- // Sequence
- OP_JUMP = 0x90,
- OP_JUMPIF = 0x91,
- OP_JUMPNIF = 0x92,
- OP_STATE = 0x93,
- OP_CALL = 0x94,
- OP_RETURN = 0x95,
- // Cast
- OP_CAST = 0xA0,
- // Stack
- OP_STACKTOS = 0xB0,
- OP_STACKTOL = 0xB1,
- // Debug
- OP_PRINT = 0xC0,
- // Library
- OP_CALLLIB = 0xD0,
- OP_CALLLIB_TWO_BYTE = 0xD1,
-
- // More Numerics
- OP_SHL = 0xE0,
- OP_SHR = 0xE1
- }
- class lslHeader
- {
- int TM; // Top of memory
- int IP; // Instruction pointer
- int VN; // Version Number (0x00000200)
- int BP; // Base Pointer
- int SP; // Stack Pointer
- int HR; // Heap Register
- int HP; // Heap Pointer
- int CS; // Current State
- int NS; // Next State
- int CE; // Current Events (Which events need running still?)
- int IE; // In Event
- int ER; // Event Register
- int FR; // Fault Register
- int SLR; // Sleep Register
- int GVR; // Global Variable Register (Pointer)
- int GFR; // Global Function Register (Pointer)
- int PR; // Parameter Register - OnRez Int?
- int ESR; // Energy Supply Register
- int SR; // State Register
- long NCE; // Extended Current Events
- long NIE; // Extended In Event
- long NER; // Extended Event Register
- public void readFromBytes(byte[] data)
- {
- }
- }
- class lslStaticBlock
- {
- int length; // Length (bytes)
- lslVarType varType;// Variable Type
- byte unknown; // Unknown
- Object varObject; // Variable Object
- public void readFromBytes(byte[] data)
- {
- }
- }
- class lslHeapBlock
- {
- int length;
- lslVarType varType;
- short referenceCount;
- Object varObject;
- public void readFromBytes(byte[] data)
- {
- }
- }
- class lslStatePointer
- {
- int location;
- long eventMask;
- public void readFromBytes(byte[] data)
- {
- }
- }
- class lslStateFrameBlock
- {
- int number;
- lslStatePointer[] pointers;
- public void readFromBytes(byte[] data)
- {
- }
- }
- class lslStateBlockElement
- {
- int pointerToCode;
- int callFrameSize;
- public void readFromBytes(byte[] data)
- {
- }
- }
- class lslStateBlock
- {
- int length;
- byte unknown;
- lslStateBlockElement[] handlers; // ?
- public void readFromBytes(byte[] data)
- {
- }
- }
- class lslFunctioBlock
- {
- int number;
- int[] pointers; // Relative to this -> codechunk
- public void readFromBytes(byte[] data)
- {
- }
- }
- class lslCodeArgument
- {
- lslVarType type;
- byte empty;
- public void readFromBytes(byte[] data)
- {
- }
- }
- class lslCodeChunkHeader
- {
- int length;
- string comment;
- lslVarType returnType;
- lslCodeArgument[] arguments;
- byte empty;
- public void readFromBytes(byte[] data)
- {
- }
- }
- class lslCodeChunk
- {
- lslCodeChunkHeader header;
- lslByteCode bytecode;
- public void readFromBytes(byte[] data)
- {
- }
- }
- }
|