ScummVM API documentation
sqopcodes.h
1/* see copyright notice in squirrel.h */
2#ifndef _SQOPCODES_H_
3#define _SQOPCODES_H_
4
5#define MAX_FUNC_STACKSIZE 0xFF
6#define MAX_LITERALS ((SQInteger)0x7FFFFFFF)
7
8enum BitWiseOP {
9 BW_AND = 0,
10 BW_OR = 2,
11 BW_XOR = 3,
12 BW_SHIFTL = 4,
13 BW_SHIFTR = 5,
14 BW_USHIFTR = 6
15};
16
17enum CmpOP {
18 CMP_G = 0,
19 CMP_GE = 2,
20 CMP_L = 3,
21 CMP_LE = 4,
22 CMP_3W = 5
23};
24
25enum NewObjectType {
26 NOT_TABLE = 0,
27 NOT_ARRAY = 1,
28 NOT_CLASS = 2
29};
30
31enum AppendArrayType {
32 AAT_STACK = 0,
33 AAT_LITERAL = 1,
34 AAT_INT = 2,
35 AAT_FLOAT = 3,
36 AAT_BOOL = 4
37};
38
39enum SQOpcode
40{
41 _OP_LINE= 0x00,
42 _OP_LOAD= 0x01,
43 _OP_LOADINT= 0x02,
44 _OP_LOADFLOAT= 0x03,
45 _OP_DLOAD= 0x04,
46 _OP_TAILCALL= 0x05,
47 _OP_CALL= 0x06,
48 _OP_PREPCALL= 0x07,
49 _OP_PREPCALLK= 0x08,
50 _OP_GETK= 0x09,
51 _OP_MOVE= 0x0A,
52 _OP_NEWSLOT= 0x0B,
53 _OP_DELETE= 0x0C,
54 _OP_SET= 0x0D,
55 _OP_GET= 0x0E,
56 _OP_EQ= 0x0F,
57 _OP_NE= 0x10,
58 _OP_ADD= 0x11,
59 _OP_SUB= 0x12,
60 _OP_MUL= 0x13,
61 _OP_DIV= 0x14,
62 _OP_MOD= 0x15,
63 _OP_BITW= 0x16,
64 _OP_RETURN= 0x17,
65 _OP_LOADNULLS= 0x18,
66 _OP_LOADROOT= 0x19,
67 _OP_LOADBOOL= 0x1A,
68 _OP_DMOVE= 0x1B,
69 _OP_JMP= 0x1C,
70 //_OP_JNZ= 0x1D,
71 _OP_JCMP= 0x1D,
72 _OP_JZ= 0x1E,
73 _OP_SETOUTER= 0x1F,
74 _OP_GETOUTER= 0x20,
75 _OP_NEWOBJ= 0x21,
76 _OP_APPENDARRAY= 0x22,
77 _OP_COMPARITH= 0x23,
78 _OP_INC= 0x24,
79 _OP_INCL= 0x25,
80 _OP_PINC= 0x26,
81 _OP_PINCL= 0x27,
82 _OP_CMP= 0x28,
83 _OP_EXISTS= 0x29,
84 _OP_INSTANCEOF= 0x2A,
85 _OP_AND= 0x2B,
86 _OP_OR= 0x2C,
87 _OP_NEG= 0x2D,
88 _OP_NOT= 0x2E,
89 _OP_BWNOT= 0x2F,
90 _OP_CLOSURE= 0x30,
91 _OP_YIELD= 0x31,
92 _OP_RESUME= 0x32,
93 _OP_FOREACH= 0x33,
94 _OP_POSTFOREACH= 0x34,
95 _OP_CLONE= 0x35,
96 _OP_TYPEOF= 0x36,
97 _OP_PUSHTRAP= 0x37,
98 _OP_POPTRAP= 0x38,
99 _OP_THROW= 0x39,
100 _OP_NEWSLOTA= 0x3A,
101 _OP_GETBASE= 0x3B,
102 _OP_CLOSE= 0x3C
103};
104
106 const SQChar *name;
107};
108
110{
111 SQInstruction() : _arg1(0), op(0), _arg0(0), _arg2(0), _arg3(0){}
112 SQInstruction(SQOpcode _op,SQInteger a0=0,SQInteger a1=0,SQInteger a2=0,SQInteger a3=0)
113 { op = (unsigned char)_op;
114 _arg0 = (unsigned char)a0;_arg1 = (SQInt32)a1;
115 _arg2 = (unsigned char)a2;_arg3 = (unsigned char)a3;
116 }
117
118
119 SQInt32 _arg1;
120 unsigned char op;
121 unsigned char _arg0;
122 unsigned char _arg2;
123 unsigned char _arg3;
124};
125
126#include "squtils.h"
128
129#define NEW_SLOT_ATTRIBUTES_FLAG 0x01
130#define NEW_SLOT_STATIC_FLAG 0x02
131
132#endif // _SQOPCODES_H_
Definition: sqopcodes.h:105
Definition: sqopcodes.h:110