diff options
author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 1999-02-02 15:57:49 -0200 |
---|---|---|
committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 1999-02-02 15:57:49 -0200 |
commit | 1a17da2ff9dce06a0405f549522a4e08026c3124 (patch) | |
tree | b31941b611df71aa51a2f85176a86f17efbd38a6 /lopcodes.h | |
parent | 50248e440a02c5eff357eaf2239cd1e7ef691614 (diff) | |
download | lua-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.h | 84 |
1 files changed, 7 insertions, 77 deletions
@@ -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 { | |||
21 | ENDCODE,/* - - - */ | 22 | ENDCODE,/* - - - */ |
22 | 23 | ||
23 | PUSHNIL,/* b - nil_0...nil_b */ | 24 | PUSHNIL,/* b - nil_0...nil_b */ |
24 | PUSHNIL0,/* - - nil */ | ||
25 | 25 | ||
26 | PUSHNUMBER,/* b - (float)b */ | 26 | PUSHNUMBER,/* b - (float)(b-NUMOFFSET) */ |
27 | PUSHNUMBER0,/* - - 0.0 */ | 27 | PUSHNUMBERW,/* w - (float)(w-NUMOFFSET) */ |
28 | PUSHNUMBER1,/* - - 1.0 */ | ||
29 | PUSHNUMBER2,/* - - 2.0 */ | ||
30 | PUSHNUMBERW,/* w - (float)w */ | ||
31 | 28 | ||
32 | PUSHCONSTANT,/* b - CNST[b] */ | 29 | PUSHCONSTANT,/* b - CNST[b] */ |
33 | PUSHCONSTANT0,/*- - CNST[0] */ | ||
34 | PUSHCONSTANT1,/*- - CNST[1] */ | ||
35 | PUSHCONSTANT2,/*- - CNST[2] */ | ||
36 | PUSHCONSTANT3,/*- - CNST[3] */ | ||
37 | PUSHCONSTANT4,/*- - CNST[4] */ | ||
38 | PUSHCONSTANT5,/*- - CNST[5] */ | ||
39 | PUSHCONSTANT6,/*- - CNST[6] */ | ||
40 | PUSHCONSTANT7,/*- - CNST[7] */ | ||
41 | PUSHCONSTANTW,/*w - CNST[w] */ | 30 | PUSHCONSTANTW,/*w - CNST[w] */ |
42 | 31 | ||
43 | PUSHUPVALUE,/* b - Closure[b] */ | 32 | PUSHUPVALUE,/* b - Closure[b] */ |
44 | PUSHUPVALUE0,/* - - Closure[0] */ | ||
45 | PUSHUPVALUE1,/* - - Closure[1] */ | ||
46 | 33 | ||
47 | PUSHLOCAL,/* b - LOC[b] */ | 34 | PUSHLOCAL,/* b - LOC[b] */ |
48 | PUSHLOCAL0,/* - - LOC[0] */ | ||
49 | PUSHLOCAL1,/* - - LOC[1] */ | ||
50 | PUSHLOCAL2,/* - - LOC[2] */ | ||
51 | PUSHLOCAL3,/* - - LOC[3] */ | ||
52 | PUSHLOCAL4,/* - - LOC[4] */ | ||
53 | PUSHLOCAL5,/* - - LOC[5] */ | ||
54 | PUSHLOCAL6,/* - - LOC[6] */ | ||
55 | PUSHLOCAL7,/* - - LOC[7] */ | ||
56 | 35 | ||
57 | GETGLOBAL,/* b - VAR[CNST[b]] */ | 36 | GETGLOBAL,/* b - VAR[CNST[b]] */ |
58 | GETGLOBAL0,/* - - VAR[CNST[0]] */ | ||
59 | GETGLOBAL1,/* - - VAR[CNST[1]] */ | ||
60 | GETGLOBAL2,/* - - VAR[CNST[2]] */ | ||
61 | GETGLOBAL3,/* - - VAR[CNST[3]] */ | ||
62 | GETGLOBAL4,/* - - VAR[CNST[4]] */ | ||
63 | GETGLOBAL5,/* - - VAR[CNST[5]] */ | ||
64 | GETGLOBAL6,/* - - VAR[CNST[6]] */ | ||
65 | GETGLOBAL7,/* - - VAR[CNST[7]] */ | ||
66 | GETGLOBALW,/* w - VAR[CNST[w]] */ | 37 | GETGLOBALW,/* w - VAR[CNST[w]] */ |
67 | 38 | ||
68 | GETTABLE,/* - i t t[i] */ | 39 | GETTABLE,/* - i t t[i] */ |
69 | 40 | ||
70 | GETDOTTED,/* b t t[CNST[b]] */ | 41 | GETDOTTED,/* b t t[CNST[b]] */ |
71 | GETDOTTED0,/* - t t[CNST[0]] */ | ||
72 | GETDOTTED1,/* - t t[CNST[1]] */ | ||
73 | GETDOTTED2,/* - t t[CNST[2]] */ | ||
74 | GETDOTTED3,/* - t t[CNST[3]] */ | ||
75 | GETDOTTED4,/* - t t[CNST[4]] */ | ||
76 | GETDOTTED5,/* - t t[CNST[5]] */ | ||
77 | GETDOTTED6,/* - t t[CNST[6]] */ | ||
78 | GETDOTTED7,/* - t t[CNST[7]] */ | ||
79 | GETDOTTEDW,/* w t t[CNST[w]] */ | 42 | GETDOTTEDW,/* w t t[CNST[w]] */ |
80 | 43 | ||
81 | PUSHSELF,/* b t t t[CNST[b]] */ | 44 | PUSHSELF,/* b t t t[CNST[b]] */ |
82 | PUSHSELF0,/* - t t t[CNST[0]] */ | ||
83 | PUSHSELF1,/* - t t t[CNST[1]] */ | ||
84 | PUSHSELF2,/* - t t t[CNST[2]] */ | ||
85 | PUSHSELF3,/* - t t t[CNST[3]] */ | ||
86 | PUSHSELF4,/* - t t t[CNST[4]] */ | ||
87 | PUSHSELF5,/* - t t t[CNST[5]] */ | ||
88 | PUSHSELF6,/* - t t t[CNST[6]] */ | ||
89 | PUSHSELF7,/* - t t t[CNST[7]] */ | ||
90 | PUSHSELFW,/* w t t t[CNST[w]] */ | 45 | PUSHSELFW,/* w t t t[CNST[w]] */ |
91 | 46 | ||
92 | CREATEARRAY,/* b - newarray(size = b) */ | 47 | CREATEARRAY,/* b - newarray(size = b) */ |
93 | CREATEARRAY0,/* - - newarray(size = 0) */ | ||
94 | CREATEARRAY1,/* - - newarray(size = 1) */ | ||
95 | CREATEARRAYW,/* w - newarray(size = w) */ | 48 | CREATEARRAYW,/* w - newarray(size = w) */ |
96 | 49 | ||
97 | SETLOCAL,/* b x - LOC[b]=x */ | 50 | SETLOCAL,/* b x - LOC[b]=x */ |
98 | SETLOCAL0,/* - x - LOC[0]=x */ | ||
99 | SETLOCAL1,/* - x - LOC[1]=x */ | ||
100 | SETLOCAL2,/* - x - LOC[2]=x */ | ||
101 | SETLOCAL3,/* - x - LOC[3]=x */ | ||
102 | SETLOCAL4,/* - x - LOC[4]=x */ | ||
103 | SETLOCAL5,/* - x - LOC[5]=x */ | ||
104 | SETLOCAL6,/* - x - LOC[6]=x */ | ||
105 | SETLOCAL7,/* - x - LOC[7]=x */ | ||
106 | 51 | ||
107 | SETGLOBAL,/* b x - VAR[CNST[b]]=x */ | 52 | SETGLOBAL,/* b x - VAR[CNST[b]]=x */ |
108 | SETGLOBAL0,/* - x - VAR[CNST[0]]=x */ | ||
109 | SETGLOBAL1,/* - x - VAR[CNST[1]]=x */ | ||
110 | SETGLOBAL2,/* - x - VAR[CNST[2]]=x */ | ||
111 | SETGLOBAL3,/* - x - VAR[CNST[3]]=x */ | ||
112 | SETGLOBAL4,/* - x - VAR[CNST[4]]=x */ | ||
113 | SETGLOBAL5,/* - x - VAR[CNST[5]]=x */ | ||
114 | SETGLOBAL6,/* - x - VAR[CNST[6]]=x */ | ||
115 | SETGLOBAL7,/* - x - VAR[CNST[7]]=x */ | ||
116 | SETGLOBALW,/* w x - VAR[CNST[w]]=x */ | 53 | SETGLOBALW,/* w x - VAR[CNST[w]]=x */ |
117 | 54 | ||
118 | SETTABLE0,/* - v i t - t[i]=v */ | 55 | SETTABLE0,/* - v i t - t[i]=v */ |
@@ -120,11 +57,9 @@ SETTABLE0,/* - v i t - t[i]=v */ | |||
120 | SETTABLE,/* b v a_b...a_1 i t a_b...a_1 i t t[i]=v */ | 57 | SETTABLE,/* b v a_b...a_1 i t a_b...a_1 i t t[i]=v */ |
121 | 58 | ||
122 | SETLIST,/* b c v_c...v_1 t - t[i+b*FPF]=v_i */ | 59 | SETLIST,/* b c v_c...v_1 t - t[i+b*FPF]=v_i */ |
123 | SETLIST0,/* b v_b...v_1 t - t[i]=v_i */ | ||
124 | SETLISTW,/* w c v_c...v_1 t - t[i+w*FPF]=v_i */ | 60 | SETLISTW,/* w c v_c...v_1 t - t[i+w*FPF]=v_i */ |
125 | 61 | ||
126 | SETMAP,/* b v_b k_b ...v_0 k_0 t t t[k_i]=v_i */ | 62 | SETMAP,/* b v_b k_b ...v_0 k_0 t t t[k_i]=v_i */ |
127 | SETMAP0,/* - v_0 k_0 t t t[k_0]=v_0 */ | ||
128 | 63 | ||
129 | EQOP,/* - y x (x==y)? 1 : nil */ | 64 | EQOP,/* - y x (x==y)? 1 : nil */ |
130 | NEQOP,/* - y x (x~=y)? 1 : nil */ | 65 | NEQOP,/* - y x (x~=y)? 1 : nil */ |
@@ -155,20 +90,15 @@ IFFUPJMP,/* b x - (x==nil)? PC-=b */ | |||
155 | IFFUPJMPW,/* w x - (x==nil)? PC-=w */ | 90 | IFFUPJMPW,/* w x - (x==nil)? PC-=w */ |
156 | 91 | ||
157 | CLOSURE,/* b c v_c...v_1 closure(CNST[b], v_c...v_1) */ | 92 | CLOSURE,/* b c v_c...v_1 closure(CNST[b], v_c...v_1) */ |
158 | CLOSUREW,/* w c v_b...v_1 closure(CNST[w], v_c...v_1) */ | ||
159 | 93 | ||
160 | CALLFUNC,/* b c v_c...v_1 f r_b...r_1 f(v1,...,v_c) */ | 94 | 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 | 95 | ||
164 | RETCODE,/* b - - */ | 96 | RETCODE,/* b - - */ |
165 | 97 | ||
166 | SETLINE,/* b - - LINE=b */ | 98 | SETLINE,/* b - - LINE=b */ |
167 | SETLINEW,/* w - - LINE=w */ | 99 | SETLINEW,/* w - - LINE=w */ |
168 | 100 | ||
169 | POP,/* b - - TOP-=(b+1) */ | 101 | POP /* b - - TOP-=(b+1) */ |
170 | POP0,/* - - - TOP-=1 */ | ||
171 | POP1/* - - - TOP-=2 */ | ||
172 | 102 | ||
173 | } OpCode; | 103 | } OpCode; |
174 | 104 | ||