diff options
author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 1997-10-06 12:51:11 -0200 |
---|---|---|
committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 1997-10-06 12:51:11 -0200 |
commit | f6a9cc9a673298dc7ee7a416fec08848e464b227 (patch) | |
tree | 4e060d0a52f8a3eecf2fe4850e7124340e21daf7 /lopcodes.h | |
parent | 28d47a0aaa646f8762085cc7fcf8953b62df0927 (diff) | |
download | lua-f6a9cc9a673298dc7ee7a416fec08848e464b227.tar.gz lua-f6a9cc9a673298dc7ee7a416fec08848e464b227.tar.bz2 lua-f6a9cc9a673298dc7ee7a416fec08848e464b227.zip |
jumps are relative to next instruction
Diffstat (limited to 'lopcodes.h')
-rw-r--r-- | lopcodes.h | 135 |
1 files changed, 67 insertions, 68 deletions
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | ** $Id: lopcodes.h,v 1.5 1997/09/24 19:43:11 roberto Exp roberto $ | 2 | ** $Id: lopcodes.h,v 1.6 1997/10/01 20:05:34 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 | */ |
@@ -18,60 +18,60 @@ | |||
18 | typedef enum { | 18 | typedef enum { |
19 | /* name parm before after side effect | 19 | /* name parm before after side effect |
20 | -----------------------------------------------------------------------------*/ | 20 | -----------------------------------------------------------------------------*/ |
21 | ENDCODE, | 21 | ENDCODE,/* - - - */ |
22 | 22 | ||
23 | PUSHNIL,/* - nil */ | 23 | PUSHNIL,/* - - nil */ |
24 | PUSHNILS,/* b - nil_1...nil_b */ | 24 | PUSHNILS,/* b - nil_1...nil_b */ |
25 | 25 | ||
26 | PUSH0,/* - 0.0 */ | 26 | PUSH0,/* - - 0.0 */ |
27 | PUSH1,/* - 1.0 */ | 27 | PUSH1,/* - - 1.0 */ |
28 | PUSH2,/* - 2.0 */ | 28 | PUSH2,/* - - 2.0 */ |
29 | PUSHBYTE,/* b - (float)b */ | 29 | PUSHBYTE,/* b - (float)b */ |
30 | PUSHWORD,/* w - (float)w */ | 30 | PUSHWORD,/* w - (float)w */ |
31 | 31 | ||
32 | PUSHCONSTANT0,/* - CNST[0] */ | 32 | PUSHCONSTANT0,/*- - CNST[0] */ |
33 | PUSHCONSTANT1,/* - CNST[1] */ | 33 | PUSHCONSTANT1,/*- - CNST[1] */ |
34 | PUSHCONSTANT2,/* - CNST[2] */ | 34 | PUSHCONSTANT2,/*- - CNST[2] */ |
35 | PUSHCONSTANT3,/* - CNST[3] */ | 35 | PUSHCONSTANT3,/*- - CNST[3] */ |
36 | PUSHCONSTANT4,/* - CNST[4] */ | 36 | PUSHCONSTANT4,/*- - CNST[4] */ |
37 | PUSHCONSTANT5,/* - CNST[5] */ | 37 | PUSHCONSTANT5,/*- - CNST[5] */ |
38 | PUSHCONSTANT6,/* - CNST[6] */ | 38 | PUSHCONSTANT6,/*- - CNST[6] */ |
39 | PUSHCONSTANT7,/* - CNST[7] */ | 39 | PUSHCONSTANT7,/*- - CNST[7] */ |
40 | PUSHCONSTANT8,/* - CNST[8] */ | 40 | PUSHCONSTANT8,/*- - CNST[8] */ |
41 | PUSHCONSTANT9,/* - CNST[9] */ | 41 | PUSHCONSTANT9,/*- - CNST[9] */ |
42 | PUSHCONSTANTB,/*b - CNST[b] */ | 42 | PUSHCONSTANTB,/*b - CNST[b] */ |
43 | PUSHCONSTANT,/* w - CNST[w] */ | 43 | PUSHCONSTANT,/* w - CNST[w] */ |
44 | 44 | ||
45 | PUSHUPVALUE0, | 45 | PUSHUPVALUE0,/* - - Closure[0] */ |
46 | PUSHUPVALUE1, | 46 | PUSHUPVALUE1,/* - - Closure[1] */ |
47 | PUSHUPVALUE,/* b - Closure[b] */ | 47 | PUSHUPVALUE,/* b - Closure[b] */ |
48 | 48 | ||
49 | PUSHLOCAL0,/* - LOC[0] */ | 49 | PUSHLOCAL0,/* - - LOC[0] */ |
50 | PUSHLOCAL1,/* - LOC[1] */ | 50 | PUSHLOCAL1,/* - - LOC[1] */ |
51 | PUSHLOCAL2,/* - LOC[2] */ | 51 | PUSHLOCAL2,/* - - LOC[2] */ |
52 | PUSHLOCAL3,/* - LOC[3] */ | 52 | PUSHLOCAL3,/* - - LOC[3] */ |
53 | PUSHLOCAL4,/* - LOC[4] */ | 53 | PUSHLOCAL4,/* - - LOC[4] */ |
54 | PUSHLOCAL5,/* - LOC[5] */ | 54 | PUSHLOCAL5,/* - - LOC[5] */ |
55 | PUSHLOCAL6,/* - LOC[6] */ | 55 | PUSHLOCAL6,/* - - LOC[6] */ |
56 | PUSHLOCAL7,/* - LOC[7] */ | 56 | PUSHLOCAL7,/* - - LOC[7] */ |
57 | PUSHLOCAL8,/* - LOC[8] */ | 57 | PUSHLOCAL8,/* - - LOC[8] */ |
58 | PUSHLOCAL9,/* - LOC[9] */ | 58 | PUSHLOCAL9,/* - - LOC[9] */ |
59 | PUSHLOCAL,/* b - LOC[b] */ | 59 | PUSHLOCAL,/* b - LOC[b] */ |
60 | 60 | ||
61 | GETGLOBAL0,/* - VAR[CNST[0]] */ | 61 | GETGLOBAL0,/* - - VAR[CNST[0]] */ |
62 | GETGLOBAL1,/* - VAR[CNST[1]] */ | 62 | GETGLOBAL1,/* - - VAR[CNST[1]] */ |
63 | GETGLOBAL2,/* - VAR[CNST[2]] */ | 63 | GETGLOBAL2,/* - - VAR[CNST[2]] */ |
64 | GETGLOBAL3,/* - VAR[CNST[3]] */ | 64 | GETGLOBAL3,/* - - VAR[CNST[3]] */ |
65 | GETGLOBAL4,/* - VAR[CNST[4]] */ | 65 | GETGLOBAL4,/* - - VAR[CNST[4]] */ |
66 | GETGLOBAL5,/* - VAR[CNST[5]] */ | 66 | GETGLOBAL5,/* - - VAR[CNST[5]] */ |
67 | GETGLOBAL6,/* - VAR[CNST[6]] */ | 67 | GETGLOBAL6,/* - - VAR[CNST[6]] */ |
68 | GETGLOBAL7,/* - VAR[CNST[7]] */ | 68 | GETGLOBAL7,/* - - VAR[CNST[7]] */ |
69 | GETGLOBAL8,/* - VAR[CNST[8]] */ | 69 | GETGLOBAL8,/* - - VAR[CNST[8]] */ |
70 | GETGLOBAL9,/* - VAR[CNST[9]] */ | 70 | GETGLOBAL9,/* - - VAR[CNST[9]] */ |
71 | GETGLOBALB,/* b - VAR[CNST[b]] */ | 71 | GETGLOBALB,/* b - VAR[CNST[b]] */ |
72 | GETGLOBAL,/* w - VAR[CNST[w]] */ | 72 | GETGLOBAL,/* w - VAR[CNST[w]] */ |
73 | 73 | ||
74 | GETTABLE,/* i t t[i] */ | 74 | GETTABLE,/* - i t t[i] */ |
75 | 75 | ||
76 | PUSHSELFB,/* b t t t[CNST[b]] */ | 76 | PUSHSELFB,/* b t t t[CNST[b]] */ |
77 | PUSHSELF,/* w t t t[CNST[w]] */ | 77 | PUSHSELF,/* w t t t[CNST[w]] */ |
@@ -79,44 +79,43 @@ PUSHSELF,/* w t t t[CNST[w]] */ | |||
79 | CREATEARRAYB,/* b - newarray(size = b) */ | 79 | CREATEARRAYB,/* b - newarray(size = b) */ |
80 | CREATEARRAY,/* w - newarray(size = w) */ | 80 | CREATEARRAY,/* w - newarray(size = w) */ |
81 | 81 | ||
82 | SETLOCAL0,/* x - LOC[0]=x */ | 82 | SETLOCAL0,/* - x - LOC[0]=x */ |
83 | SETLOCAL1,/* x - LOC[1]=x */ | 83 | SETLOCAL1,/* - x - LOC[1]=x */ |
84 | SETLOCAL2,/* x - LOC[2]=x */ | 84 | SETLOCAL2,/* - x - LOC[2]=x */ |
85 | SETLOCAL3,/* x - LOC[3]=x */ | 85 | SETLOCAL3,/* - x - LOC[3]=x */ |
86 | SETLOCAL4,/* x - LOC[4]=x */ | 86 | SETLOCAL4,/* - x - LOC[4]=x */ |
87 | SETLOCAL5,/* x - LOC[5]=x */ | 87 | SETLOCAL5,/* - x - LOC[5]=x */ |
88 | SETLOCAL6,/* x - LOC[6]=x */ | 88 | SETLOCAL6,/* - x - LOC[6]=x */ |
89 | SETLOCAL7,/* x - LOC[7]=x */ | 89 | SETLOCAL7,/* - x - LOC[7]=x */ |
90 | SETLOCAL8,/* x - LOC[8]=x */ | 90 | SETLOCAL8,/* - x - LOC[8]=x */ |
91 | SETLOCAL9,/* x - LOC[9]=x */ | 91 | SETLOCAL9,/* - x - LOC[9]=x */ |
92 | SETLOCAL,/* b x - LOC[b]=x */ | 92 | SETLOCAL,/* b x - LOC[b]=x */ |
93 | 93 | ||
94 | SETGLOBALB,/* b x - VAR[CNST[b]]=x */ | 94 | SETGLOBALB,/* b x - VAR[CNST[b]]=x */ |
95 | SETGLOBAL,/* w x - VAR[CNST[w]]=x */ | 95 | SETGLOBAL,/* w x - VAR[CNST[w]]=x */ |
96 | 96 | ||
97 | SETTABLE0,/* v i t - t[i]=v */ | 97 | SETTABLE0,/* - v i t - t[i]=v */ |
98 | SETTABLE,/* b v a_b...a_1 i t a_b...a_1 i t t[i]=v */ | 98 | SETTABLE,/* b v a_b...a_1 i t a_b...a_1 i t t[i]=v */ |
99 | 99 | ||
100 | SETLIST0,/* b v_b...v_1 t - t[i]=v_i */ | 100 | SETLIST0,/* b v_b...v_1 t - t[i]=v_i */ |
101 | SETLIST,/* b c v_b...v_1 t - t[i+c*FPF]=v_i */ | 101 | SETLIST,/* b c v_b...v_1 t - t[i+c*FPF]=v_i */ |
102 | SETMAP,/* b v_b k_b ...v_1 k_1 t t t[k_i]=v_i */ | 102 | SETMAP,/* b v_b k_b ...v_1 k_1 t t t[k_i]=v_i */ |
103 | 103 | ||
104 | EQOP,/* y x (x==y)? 1 : nil */ | 104 | EQOP,/* - y x (x==y)? 1 : nil */ |
105 | NEQOP,/* y x (x~=y)? 1 : nil */ | 105 | NEQOP,/* - y x (x~=y)? 1 : nil */ |
106 | LTOP,/* y x (x<y)? 1 : nil */ | 106 | LTOP,/* - y x (x<y)? 1 : nil */ |
107 | LEOP,/* y x (x<y)? 1 : nil */ | 107 | LEOP,/* - y x (x<y)? 1 : nil */ |
108 | GTOP,/* y x (x>y)? 1 : nil */ | 108 | GTOP,/* - y x (x>y)? 1 : nil */ |
109 | GEOP,/* y x (x>=y)? 1 : nil */ | 109 | GEOP,/* - y x (x>=y)? 1 : nil */ |
110 | ADDOP,/* y x x+y */ | 110 | ADDOP,/* - y x x+y */ |
111 | SUBOP,/* y x x-y */ | 111 | SUBOP,/* - y x x-y */ |
112 | MULTOP,/* y x x*y */ | 112 | MULTOP,/* - y x x*y */ |
113 | DIVOP,/* y x x/y */ | 113 | DIVOP,/* - y x x/y */ |
114 | POWOP,/* y x x^y */ | 114 | POWOP,/* - y x x^y */ |
115 | CONCOP,/* y x x..y */ | 115 | CONCOP,/* - y x x..y */ |
116 | MINUSOP,/* x -x */ | 116 | MINUSOP,/* - x -x */ |
117 | NOTOP,/* x (x==nil)? 1 : nil */ | 117 | NOTOP,/* - x (x==nil)? 1 : nil */ |
118 | 118 | ||
119 | /* NOTICE: all jumps are relative to the position following the opcode */ | ||
120 | ONTJMP,/* b x (x!=nil)? x : - (x!=nil)? PC+=b */ | 119 | ONTJMP,/* b x (x!=nil)? x : - (x!=nil)? PC+=b */ |
121 | ONFJMP,/* b x (x==nil)? x : - (x==nil)? PC+=b */ | 120 | ONFJMP,/* b x (x==nil)? x : - (x==nil)? PC+=b */ |
122 | JMPB,/* b - - PC+=b */ | 121 | JMPB,/* b - - PC+=b */ |
@@ -134,8 +133,8 @@ CLOSURE,/* w v_1...v_n c(CNST[w]) */ | |||
134 | CALLFUNC,/* b c v_b...v_1 f r_c...r_1 f(v1,...,v_b) */ | 133 | CALLFUNC,/* b c v_b...v_1 f r_c...r_1 f(v1,...,v_b) */ |
135 | RETCODE,/* b - - */ | 134 | RETCODE,/* b - - */ |
136 | SETLINE,/* w - - LINE=w */ | 135 | SETLINE,/* w - - LINE=w */ |
137 | POP1,/* - - TOP-=1 */ | 136 | POP1,/* - - - TOP-=1 */ |
138 | POP2,/* - - TOP-=2 */ | 137 | POP2,/* - - - TOP-=2 */ |
139 | POPS,/* b - - TOP-=b */ | 138 | POPS,/* b - - TOP-=b */ |
140 | ARGS,/* b - - TOP=BASE+b */ | 139 | ARGS,/* b - - TOP=BASE+b */ |
141 | VARARGS/* b v_x...v_1 {v_1...v_x;n=x} TOP=BASE+b+1 */ | 140 | VARARGS/* b v_x...v_1 {v_1...v_x;n=x} TOP=BASE+b+1 */ |