ScummVM API documentation
lopcodes.h
1
/*
2
** Opcodes for Lua virtual machine
3
** See Copyright Notice in lua.h
4
*/
5
6
#ifndef GRIM_LOPCODES_H
7
#define GRIM_LOPCODES_H
8
9
namespace
Grim
{
10
11
/*
12
** NOTICE: variants of the same opcode must be consecutive: First, those
13
** with byte parameter, then with built-in parameters, and last with
14
** word parameter.
15
*/
16
17
typedef
enum
{
18
// name parm before after side effect
19
//-----------------------------------------------------------------------------
20
ENDCODE,
// - - -
21
22
PUSHNIL,
// b - nil_0...nil_b
23
PUSHNIL0,
// - - nil
24
25
PUSHNUMBER,
// b - (float)b
26
PUSHNUMBER0,
// - - 0.0
27
PUSHNUMBER1,
// - - 1.0
28
PUSHNUMBER2,
// - - 2.0
29
PUSHNUMBERW,
// w - (float)w
30
31
PUSHCONSTANT,
// b - CNST[b]
32
PUSHCONSTANT0,
// - - CNST[0]
33
PUSHCONSTANT1,
// - - CNST[1]
34
PUSHCONSTANT2,
// - - CNST[2]
35
PUSHCONSTANT3,
// - - CNST[3]
36
PUSHCONSTANT4,
// - - CNST[4]
37
PUSHCONSTANT5,
// - - CNST[5]
38
PUSHCONSTANT6,
// - - CNST[6]
39
PUSHCONSTANT7,
// - - CNST[7]
40
PUSHCONSTANTW,
// w - CNST[w]
41
42
PUSHUPVALUE,
// b - Closure[b]
43
PUSHUPVALUE0,
// - - Closure[0]
44
PUSHUPVALUE1,
// - - Closure[1]
45
46
PUSHLOCAL,
// b - LOC[b]
47
PUSHLOCAL0,
// - - LOC[0]
48
PUSHLOCAL1,
// - - LOC[1]
49
PUSHLOCAL2,
// - - LOC[2]
50
PUSHLOCAL3,
// - - LOC[3]
51
PUSHLOCAL4,
// - - LOC[4]
52
PUSHLOCAL5,
// - - LOC[5]
53
PUSHLOCAL6,
// - - LOC[6]
54
PUSHLOCAL7,
// - - LOC[7]
55
56
GETGLOBAL,
// b - VAR[CNST[b]]
57
GETGLOBAL0,
// - - VAR[CNST[0]]
58
GETGLOBAL1,
// - - VAR[CNST[1]]
59
GETGLOBAL2,
// - - VAR[CNST[2]]
60
GETGLOBAL3,
// - - VAR[CNST[3]]
61
GETGLOBAL4,
// - - VAR[CNST[4]]
62
GETGLOBAL5,
// - - VAR[CNST[5]]
63
GETGLOBAL6,
// - - VAR[CNST[6]]
64
GETGLOBAL7,
// - - VAR[CNST[7]]
65
GETGLOBALW,
// w - VAR[CNST[w]]
66
67
GETTABLE,
// - i t t[i]
68
69
GETDOTTED,
// b t t[CNST[b]]
70
GETDOTTED0,
// - t t[CNST[0]]
71
GETDOTTED1,
// - t t[CNST[1]]
72
GETDOTTED2,
// - t t[CNST[2]]
73
GETDOTTED3,
// - t t[CNST[3]]
74
GETDOTTED4,
// - t t[CNST[4]]
75
GETDOTTED5,
// - t t[CNST[5]]
76
GETDOTTED6,
// - t t[CNST[6]]
77
GETDOTTED7,
// - t t[CNST[7]]
78
GETDOTTEDW,
// w t t[CNST[w]]
79
80
PUSHSELF,
// b t t t[CNST[b]]
81
PUSHSELF0,
// - t t t[CNST[0]]
82
PUSHSELF1,
// - t t t[CNST[1]]
83
PUSHSELF2,
// - t t t[CNST[2]]
84
PUSHSELF3,
// - t t t[CNST[3]]
85
PUSHSELF4,
// - t t t[CNST[4]]
86
PUSHSELF5,
// - t t t[CNST[5]]
87
PUSHSELF6,
// - t t t[CNST[6]]
88
PUSHSELF7,
// - t t t[CNST[7]]
89
PUSHSELFW,
// w t t t[CNST[w]]
90
91
CREATEARRAY,
// b - newarray(size = b)
92
CREATEARRAY0,
// - - newarray(size = 0)
93
CREATEARRAY1,
// - - newarray(size = 1)
94
CREATEARRAYW,
// w - newarray(size = w)
95
96
SETLOCAL,
// b x - LOC[b]=x
97
SETLOCAL0,
// - x - LOC[0]=x
98
SETLOCAL1,
// - x - LOC[1]=x
99
SETLOCAL2,
// - x - LOC[2]=x
100
SETLOCAL3,
// - x - LOC[3]=x
101
SETLOCAL4,
// - x - LOC[4]=x
102
SETLOCAL5,
// - x - LOC[5]=x
103
SETLOCAL6,
// - x - LOC[6]=x
104
SETLOCAL7,
// - x - LOC[7]=x
105
106
SETGLOBAL,
// b x - VAR[CNST[b]]=x
107
SETGLOBAL0,
// - x - VAR[CNST[0]]=x
108
SETGLOBAL1,
// - x - VAR[CNST[1]]=x
109
SETGLOBAL2,
// - x - VAR[CNST[2]]=x
110
SETGLOBAL3,
// - x - VAR[CNST[3]]=x
111
SETGLOBAL4,
// - x - VAR[CNST[4]]=x
112
SETGLOBAL5,
// - x - VAR[CNST[5]]=x
113
SETGLOBAL6,
// - x - VAR[CNST[6]]=x
114
SETGLOBAL7,
// - x - VAR[CNST[7]]=x
115
SETGLOBALW,
// w x - VAR[CNST[w]]=x
116
117
SETTABLE0,
// - vci t - t[i]=v
118
119
SETTABLE,
// b v a_b...a_1 i t a_b...a_1 i t t[i]=v
120
121
SETLIST,
// b c v_c...v_1 t - t[i+b*FPF]=v_i
122
SETLIST0,
// b v_b...v_1 t - t[i]=v_i
123
SETLISTW,
// w c v_c...v_1 t - t[i+w*FPF]=v_i
124
125
SETMAP,
// b v_b k_b ...v_0 k_0 t t t[k_i]=v_i
126
SETMAP0,
// - v_0 k_0 t t t[k_0]=v_0
127
128
EQOP,
// - y x (x==y)? 1 : nil
129
NEQOP,
// - y x (x~=y)? 1 : nil
130
LTOP,
// - y x (x<y)? 1 : nil
131
LEOP,
// - y x (x<y)? 1 : nil
132
GTOP,
// - y x (x>y)? 1 : nil
133
GEOP,
// - y x (x>=y)? 1 : nil
134
ADDOP,
// - y x x+y
135
SUBOP,
// - y x x-y
136
MULTOP,
// - y x x*y
137
DIVOP,
// - y x x/y
138
POWOP,
// - y x x^y
139
CONCOP,
// - y x x..y
140
MINUSOP,
// - x -x
141
NOTOP,
// - x (x==nil)? 1 : nil
142
143
ONTJMP,
// b x (x!=nil)? x : - (x!=nil)? PC+=b
144
ONTJMPW,
// w x (x!=nil)? x : - (x!=nil)? PC+=w
145
ONFJMP,
// b x (x==nil)? x : - (x==nil)? PC+=b
146
ONFJMPW,
// w x (x==nil)? x : - (x==nil)? PC+=w
147
JMP,
// b - - PC+=b
148
JMPW,
// w - - PC+=w
149
IFFJMP,
// b x - (x==nil)? PC+=b
150
IFFJMPW,
// w x - (x==nil)? PC+=w
151
IFTUPJMP,
// b x - (x!=nil)? PC-=b
152
IFTUPJMPW,
// w x - (x!=nil)? PC-=w
153
IFFUPJMP,
// b x - (x==nil)? PC-=b
154
IFFUPJMPW,
// w x - (x==nil)? PC-=w
155
156
CLOSURE,
// c f v_c...v_1 closure(f, v_c...v_1)
157
CLOSURE0,
// - f closure(f)
158
CLOSURE1,
// - f v closure(f, v)
159
160
CALLFUNC,
// b c v_c...v_1 f r_b...r_1 f(v1,...,v_c)
161
CALLFUNC0,
// b v_b...v_1 f - f(v1,...,v_b)
162
CALLFUNC1,
// b v_b...v_1 f r_1 f(v1,...,v_b)
163
164
RETCODE,
// b - -
165
166
SETLINE,
// b - - LINE=b
167
SETLINEW,
// w - - LINE=w
168
169
POP,
// b - - TOP-=(b+1)
170
POP0,
// - - - TOP-=1
171
POP1
// - - - TOP-=2
172
} OpCode;
173
174
#define RFIELDS_PER_FLUSH 32 // records (SETMAP)
175
#define LFIELDS_PER_FLUSH 64 // lists (SETLIST)
176
#define ZEROVARARG 64
177
178
}
// end of namespace Grim
179
180
#endif
Grim
Definition:
actor.h:33
engines
grim
lua
lopcodes.h
Generated on Sat Nov 23 2024 09:06:00 for ScummVM API documentation by
1.8.13