aboutsummaryrefslogtreecommitdiff
path: root/lopcodes.h
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>1999-02-02 15:57:49 -0200
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>1999-02-02 15:57:49 -0200
commit1a17da2ff9dce06a0405f549522a4e08026c3124 (patch)
treeb31941b611df71aa51a2f85176a86f17efbd38a6 /lopcodes.h
parent50248e440a02c5eff357eaf2239cd1e7ef691614 (diff)
downloadlua-1a17da2ff9dce06a0405f549522a4e08026c3124.tar.gz
lua-1a17da2ff9dce06a0405f549522a4e08026c3124.tar.bz2
lua-1a17da2ff9dce06a0405f549522a4e08026c3124.zip
opcodes with builtin parameters are too complicated for very little extra
performance.
Diffstat (limited to 'lopcodes.h')
-rw-r--r--lopcodes.h84
1 files changed, 7 insertions, 77 deletions
diff --git a/lopcodes.h b/lopcodes.h
index f4a8a9cc..810d1ebe 100644
--- a/lopcodes.h
+++ b/lopcodes.h
@@ -1,5 +1,5 @@
1/* 1/*
2** $Id: lopcodes.h,v 1.17 1998/03/25 18:52:29 roberto Exp roberto $ 2** $Id: lopcodes.h,v 1.18 1998/06/25 14:37:00 roberto Exp roberto $
3** Opcodes for Lua virtual machine 3** Opcodes for Lua virtual machine
4** See Copyright Notice in lua.h 4** See Copyright Notice in lua.h
5*/ 5*/
@@ -8,10 +8,11 @@
8#define lopcodes_h 8#define lopcodes_h
9 9
10 10
11#define NUMOFFSET 100
12
11/* 13/*
12** NOTICE: variants of the same opcode must be consecutive: First, those 14** NOTICE: variants of the same opcode must be consecutive: First, those
13** with byte parameter, then with built-in parameters, and last with 15** with byte parameter, then with word parameter.
14** word parameter.
15*/ 16*/
16 17
17 18
@@ -21,98 +22,34 @@ typedef enum {
21ENDCODE,/* - - - */ 22ENDCODE,/* - - - */
22 23
23PUSHNIL,/* b - nil_0...nil_b */ 24PUSHNIL,/* b - nil_0...nil_b */
24PUSHNIL0,/* - - nil */
25 25
26PUSHNUMBER,/* b - (float)b */ 26PUSHNUMBER,/* b - (float)(b-NUMOFFSET) */
27PUSHNUMBER0,/* - - 0.0 */ 27PUSHNUMBERW,/* w - (float)(w-NUMOFFSET) */
28PUSHNUMBER1,/* - - 1.0 */
29PUSHNUMBER2,/* - - 2.0 */
30PUSHNUMBERW,/* w - (float)w */
31 28
32PUSHCONSTANT,/* b - CNST[b] */ 29PUSHCONSTANT,/* b - CNST[b] */
33PUSHCONSTANT0,/*- - CNST[0] */
34PUSHCONSTANT1,/*- - CNST[1] */
35PUSHCONSTANT2,/*- - CNST[2] */
36PUSHCONSTANT3,/*- - CNST[3] */
37PUSHCONSTANT4,/*- - CNST[4] */
38PUSHCONSTANT5,/*- - CNST[5] */
39PUSHCONSTANT6,/*- - CNST[6] */
40PUSHCONSTANT7,/*- - CNST[7] */
41PUSHCONSTANTW,/*w - CNST[w] */ 30PUSHCONSTANTW,/*w - CNST[w] */
42 31
43PUSHUPVALUE,/* b - Closure[b] */ 32PUSHUPVALUE,/* b - Closure[b] */
44PUSHUPVALUE0,/* - - Closure[0] */
45PUSHUPVALUE1,/* - - Closure[1] */
46 33
47PUSHLOCAL,/* b - LOC[b] */ 34PUSHLOCAL,/* b - LOC[b] */
48PUSHLOCAL0,/* - - LOC[0] */
49PUSHLOCAL1,/* - - LOC[1] */
50PUSHLOCAL2,/* - - LOC[2] */
51PUSHLOCAL3,/* - - LOC[3] */
52PUSHLOCAL4,/* - - LOC[4] */
53PUSHLOCAL5,/* - - LOC[5] */
54PUSHLOCAL6,/* - - LOC[6] */
55PUSHLOCAL7,/* - - LOC[7] */
56 35
57GETGLOBAL,/* b - VAR[CNST[b]] */ 36GETGLOBAL,/* b - VAR[CNST[b]] */
58GETGLOBAL0,/* - - VAR[CNST[0]] */
59GETGLOBAL1,/* - - VAR[CNST[1]] */
60GETGLOBAL2,/* - - VAR[CNST[2]] */
61GETGLOBAL3,/* - - VAR[CNST[3]] */
62GETGLOBAL4,/* - - VAR[CNST[4]] */
63GETGLOBAL5,/* - - VAR[CNST[5]] */
64GETGLOBAL6,/* - - VAR[CNST[6]] */
65GETGLOBAL7,/* - - VAR[CNST[7]] */
66GETGLOBALW,/* w - VAR[CNST[w]] */ 37GETGLOBALW,/* w - VAR[CNST[w]] */
67 38
68GETTABLE,/* - i t t[i] */ 39GETTABLE,/* - i t t[i] */
69 40
70GETDOTTED,/* b t t[CNST[b]] */ 41GETDOTTED,/* b t t[CNST[b]] */
71GETDOTTED0,/* - t t[CNST[0]] */
72GETDOTTED1,/* - t t[CNST[1]] */
73GETDOTTED2,/* - t t[CNST[2]] */
74GETDOTTED3,/* - t t[CNST[3]] */
75GETDOTTED4,/* - t t[CNST[4]] */
76GETDOTTED5,/* - t t[CNST[5]] */
77GETDOTTED6,/* - t t[CNST[6]] */
78GETDOTTED7,/* - t t[CNST[7]] */
79GETDOTTEDW,/* w t t[CNST[w]] */ 42GETDOTTEDW,/* w t t[CNST[w]] */
80 43
81PUSHSELF,/* b t t t[CNST[b]] */ 44PUSHSELF,/* b t t t[CNST[b]] */
82PUSHSELF0,/* - t t t[CNST[0]] */
83PUSHSELF1,/* - t t t[CNST[1]] */
84PUSHSELF2,/* - t t t[CNST[2]] */
85PUSHSELF3,/* - t t t[CNST[3]] */
86PUSHSELF4,/* - t t t[CNST[4]] */
87PUSHSELF5,/* - t t t[CNST[5]] */
88PUSHSELF6,/* - t t t[CNST[6]] */
89PUSHSELF7,/* - t t t[CNST[7]] */
90PUSHSELFW,/* w t t t[CNST[w]] */ 45PUSHSELFW,/* w t t t[CNST[w]] */
91 46
92CREATEARRAY,/* b - newarray(size = b) */ 47CREATEARRAY,/* b - newarray(size = b) */
93CREATEARRAY0,/* - - newarray(size = 0) */
94CREATEARRAY1,/* - - newarray(size = 1) */
95CREATEARRAYW,/* w - newarray(size = w) */ 48CREATEARRAYW,/* w - newarray(size = w) */
96 49
97SETLOCAL,/* b x - LOC[b]=x */ 50SETLOCAL,/* b x - LOC[b]=x */
98SETLOCAL0,/* - x - LOC[0]=x */
99SETLOCAL1,/* - x - LOC[1]=x */
100SETLOCAL2,/* - x - LOC[2]=x */
101SETLOCAL3,/* - x - LOC[3]=x */
102SETLOCAL4,/* - x - LOC[4]=x */
103SETLOCAL5,/* - x - LOC[5]=x */
104SETLOCAL6,/* - x - LOC[6]=x */
105SETLOCAL7,/* - x - LOC[7]=x */
106 51
107SETGLOBAL,/* b x - VAR[CNST[b]]=x */ 52SETGLOBAL,/* b x - VAR[CNST[b]]=x */
108SETGLOBAL0,/* - x - VAR[CNST[0]]=x */
109SETGLOBAL1,/* - x - VAR[CNST[1]]=x */
110SETGLOBAL2,/* - x - VAR[CNST[2]]=x */
111SETGLOBAL3,/* - x - VAR[CNST[3]]=x */
112SETGLOBAL4,/* - x - VAR[CNST[4]]=x */
113SETGLOBAL5,/* - x - VAR[CNST[5]]=x */
114SETGLOBAL6,/* - x - VAR[CNST[6]]=x */
115SETGLOBAL7,/* - x - VAR[CNST[7]]=x */
116SETGLOBALW,/* w x - VAR[CNST[w]]=x */ 53SETGLOBALW,/* w x - VAR[CNST[w]]=x */
117 54
118SETTABLE0,/* - v i t - t[i]=v */ 55SETTABLE0,/* - v i t - t[i]=v */
@@ -120,11 +57,9 @@ SETTABLE0,/* - v i t - t[i]=v */
120SETTABLE,/* b v a_b...a_1 i t a_b...a_1 i t t[i]=v */ 57SETTABLE,/* b v a_b...a_1 i t a_b...a_1 i t t[i]=v */
121 58
122SETLIST,/* b c v_c...v_1 t - t[i+b*FPF]=v_i */ 59SETLIST,/* b c v_c...v_1 t - t[i+b*FPF]=v_i */
123SETLIST0,/* b v_b...v_1 t - t[i]=v_i */
124SETLISTW,/* w c v_c...v_1 t - t[i+w*FPF]=v_i */ 60SETLISTW,/* w c v_c...v_1 t - t[i+w*FPF]=v_i */
125 61
126SETMAP,/* b v_b k_b ...v_0 k_0 t t t[k_i]=v_i */ 62SETMAP,/* b v_b k_b ...v_0 k_0 t t t[k_i]=v_i */
127SETMAP0,/* - v_0 k_0 t t t[k_0]=v_0 */
128 63
129EQOP,/* - y x (x==y)? 1 : nil */ 64EQOP,/* - y x (x==y)? 1 : nil */
130NEQOP,/* - y x (x~=y)? 1 : nil */ 65NEQOP,/* - y x (x~=y)? 1 : nil */
@@ -155,20 +90,15 @@ IFFUPJMP,/* b x - (x==nil)? PC-=b */
155IFFUPJMPW,/* w x - (x==nil)? PC-=w */ 90IFFUPJMPW,/* w x - (x==nil)? PC-=w */
156 91
157CLOSURE,/* b c v_c...v_1 closure(CNST[b], v_c...v_1) */ 92CLOSURE,/* b c v_c...v_1 closure(CNST[b], v_c...v_1) */
158CLOSUREW,/* w c v_b...v_1 closure(CNST[w], v_c...v_1) */
159 93
160CALLFUNC,/* b c v_c...v_1 f r_b...r_1 f(v1,...,v_c) */ 94CALLFUNC,/* b c v_c...v_1 f r_b...r_1 f(v1,...,v_c) */
161CALLFUNC0,/* b v_b...v_1 f - f(v1,...,v_b) */
162CALLFUNC1,/* b v_b...v_1 f r_1 f(v1,...,v_b) */
163 95
164RETCODE,/* b - - */ 96RETCODE,/* b - - */
165 97
166SETLINE,/* b - - LINE=b */ 98SETLINE,/* b - - LINE=b */
167SETLINEW,/* w - - LINE=w */ 99SETLINEW,/* w - - LINE=w */
168 100
169POP,/* b - - TOP-=(b+1) */ 101POP /* b - - TOP-=(b+1) */
170POP0,/* - - - TOP-=1 */
171POP1/* - - - TOP-=2 */
172 102
173} OpCode; 103} OpCode;
174 104