diff options
author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 1999-02-02 17:41:17 -0200 |
---|---|---|
committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 1999-02-02 17:41:17 -0200 |
commit | 27407fc1f5fc4e0d97dadeda5939efa62fe7e380 (patch) | |
tree | a47a3f41547509627999963896b5ce3c8a335bf7 /lopcodes.h | |
parent | 1a17da2ff9dce06a0405f549522a4e08026c3124 (diff) | |
download | lua-27407fc1f5fc4e0d97dadeda5939efa62fe7e380.tar.gz lua-27407fc1f5fc4e0d97dadeda5939efa62fe7e380.tar.bz2 lua-27407fc1f5fc4e0d97dadeda5939efa62fe7e380.zip |
new syntax: assignment expressions + better order for opcodes
Diffstat (limited to 'lopcodes.h')
-rw-r--r-- | lopcodes.h | 46 |
1 files changed, 24 insertions, 22 deletions
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | ** $Id: lopcodes.h,v 1.18 1998/06/25 14:37:00 roberto Exp roberto $ | 2 | ** $Id: lopcodes.h,v 1.19 1999/02/02 17:57:49 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 | */ |
@@ -12,7 +12,7 @@ | |||
12 | 12 | ||
13 | /* | 13 | /* |
14 | ** NOTICE: variants of the same opcode must be consecutive: First, those | 14 | ** NOTICE: variants of the same opcode must be consecutive: First, those |
15 | ** with byte parameter, then with word parameter. | 15 | ** with word parameter, then with byte parameter. |
16 | */ | 16 | */ |
17 | 17 | ||
18 | 18 | ||
@@ -20,49 +20,55 @@ typedef enum { | |||
20 | /* name parm before after side effect | 20 | /* name parm before after side effect |
21 | -----------------------------------------------------------------------------*/ | 21 | -----------------------------------------------------------------------------*/ |
22 | ENDCODE,/* - - - */ | 22 | ENDCODE,/* - - - */ |
23 | RETCODE,/* b - - */ | ||
23 | 24 | ||
24 | PUSHNIL,/* b - nil_0...nil_b */ | 25 | PUSHNIL,/* b - nil_0...nil_b */ |
26 | POP,/* b - - TOP-=(b+1) */ | ||
25 | 27 | ||
26 | PUSHNUMBER,/* b - (float)(b-NUMOFFSET) */ | ||
27 | PUSHNUMBERW,/* w - (float)(w-NUMOFFSET) */ | 28 | PUSHNUMBERW,/* w - (float)(w-NUMOFFSET) */ |
29 | PUSHNUMBER,/* b - (float)(b-NUMOFFSET) */ | ||
28 | 30 | ||
29 | PUSHCONSTANT,/* b - CNST[b] */ | ||
30 | PUSHCONSTANTW,/*w - CNST[w] */ | 31 | PUSHCONSTANTW,/*w - CNST[w] */ |
32 | PUSHCONSTANT,/* b - CNST[b] */ | ||
31 | 33 | ||
32 | PUSHUPVALUE,/* b - Closure[b] */ | 34 | PUSHUPVALUE,/* b - Closure[b] */ |
33 | 35 | ||
34 | PUSHLOCAL,/* b - LOC[b] */ | 36 | PUSHLOCAL,/* b - LOC[b] */ |
35 | 37 | ||
36 | GETGLOBAL,/* b - VAR[CNST[b]] */ | ||
37 | GETGLOBALW,/* w - VAR[CNST[w]] */ | 38 | GETGLOBALW,/* w - VAR[CNST[w]] */ |
39 | GETGLOBAL,/* b - VAR[CNST[b]] */ | ||
38 | 40 | ||
39 | GETTABLE,/* - i t t[i] */ | 41 | GETTABLE,/* - i t t[i] */ |
40 | 42 | ||
41 | GETDOTTED,/* b t t[CNST[b]] */ | ||
42 | GETDOTTEDW,/* w t t[CNST[w]] */ | 43 | GETDOTTEDW,/* w t t[CNST[w]] */ |
44 | GETDOTTED,/* b t t[CNST[b]] */ | ||
43 | 45 | ||
44 | PUSHSELF,/* b t t t[CNST[b]] */ | ||
45 | PUSHSELFW,/* w t t t[CNST[w]] */ | 46 | PUSHSELFW,/* w t t t[CNST[w]] */ |
47 | PUSHSELF,/* b t t t[CNST[b]] */ | ||
46 | 48 | ||
47 | CREATEARRAY,/* b - newarray(size = b) */ | ||
48 | CREATEARRAYW,/* w - newarray(size = w) */ | 49 | CREATEARRAYW,/* w - newarray(size = w) */ |
50 | CREATEARRAY,/* b - newarray(size = b) */ | ||
49 | 51 | ||
50 | SETLOCAL,/* b x - LOC[b]=x */ | 52 | SETLOCAL,/* b x - LOC[b]=x */ |
53 | SETLOCALDUP,/* b x x LOC[b]=x */ | ||
51 | 54 | ||
52 | SETGLOBAL,/* b x - VAR[CNST[b]]=x */ | ||
53 | SETGLOBALW,/* w x - VAR[CNST[w]]=x */ | 55 | SETGLOBALW,/* w x - VAR[CNST[w]]=x */ |
56 | SETGLOBAL,/* b x - VAR[CNST[b]]=x */ | ||
57 | SETGLOBALDUPW,/*w x x VAR[CNST[w]]=x */ | ||
58 | SETGLOBALDUP,/* b x x VAR[CNST[b]]=x */ | ||
54 | 59 | ||
55 | SETTABLE0,/* - v i t - t[i]=v */ | 60 | SETTABLE0,/* - v i t - t[i]=v */ |
61 | SETTABLEDUP,/* - v i t v t[i]=v */ | ||
56 | 62 | ||
57 | SETTABLE,/* b v a_b...a_1 i t a_b...a_1 i t t[i]=v */ | 63 | SETTABLE,/* b v a_b...a_1 i t a_b...a_1 i t t[i]=v */ |
58 | 64 | ||
59 | SETLIST,/* b c v_c...v_1 t - t[i+b*FPF]=v_i */ | ||
60 | SETLISTW,/* w c v_c...v_1 t - t[i+w*FPF]=v_i */ | 65 | SETLISTW,/* w c v_c...v_1 t - t[i+w*FPF]=v_i */ |
66 | SETLIST,/* b c v_c...v_1 t - t[i+b*FPF]=v_i */ | ||
61 | 67 | ||
62 | SETMAP,/* b v_b k_b ...v_0 k_0 t t t[k_i]=v_i */ | 68 | SETMAP,/* b v_b k_b ...v_0 k_0 t t t[k_i]=v_i */ |
63 | 69 | ||
64 | EQOP,/* - y x (x==y)? 1 : nil */ | ||
65 | NEQOP,/* - y x (x~=y)? 1 : nil */ | 70 | NEQOP,/* - y x (x~=y)? 1 : nil */ |
71 | EQOP,/* - y x (x==y)? 1 : nil */ | ||
66 | LTOP,/* - y x (x<y)? 1 : nil */ | 72 | LTOP,/* - y x (x<y)? 1 : nil */ |
67 | LEOP,/* - y x (x<y)? 1 : nil */ | 73 | LEOP,/* - y x (x<y)? 1 : nil */ |
68 | GTOP,/* - y x (x>y)? 1 : nil */ | 74 | GTOP,/* - y x (x>y)? 1 : nil */ |
@@ -76,29 +82,25 @@ CONCOP,/* - y x x..y */ | |||
76 | MINUSOP,/* - x -x */ | 82 | MINUSOP,/* - x -x */ |
77 | NOTOP,/* - x (x==nil)? 1 : nil */ | 83 | NOTOP,/* - x (x==nil)? 1 : nil */ |
78 | 84 | ||
79 | ONTJMP,/* b x (x!=nil)? x : - (x!=nil)? PC+=b */ | ||
80 | ONTJMPW,/* w x (x!=nil)? x : - (x!=nil)? PC+=w */ | 85 | ONTJMPW,/* w x (x!=nil)? x : - (x!=nil)? PC+=w */ |
81 | ONFJMP,/* b x (x==nil)? x : - (x==nil)? PC+=b */ | 86 | ONTJMP,/* b x (x!=nil)? x : - (x!=nil)? PC+=b */ |
82 | ONFJMPW,/* w x (x==nil)? x : - (x==nil)? PC+=w */ | 87 | ONFJMPW,/* w x (x==nil)? x : - (x==nil)? PC+=w */ |
83 | JMP,/* b - - PC+=b */ | 88 | ONFJMP,/* b x (x==nil)? x : - (x==nil)? PC+=b */ |
84 | JMPW,/* w - - PC+=w */ | 89 | JMPW,/* w - - PC+=w */ |
85 | IFFJMP,/* b x - (x==nil)? PC+=b */ | 90 | JMP,/* b - - PC+=b */ |
86 | IFFJMPW,/* w x - (x==nil)? PC+=w */ | 91 | IFFJMPW,/* w x - (x==nil)? PC+=w */ |
87 | IFTUPJMP,/* b x - (x!=nil)? PC-=b */ | 92 | IFFJMP,/* b x - (x==nil)? PC+=b */ |
88 | IFTUPJMPW,/* w x - (x!=nil)? PC-=w */ | 93 | IFTUPJMPW,/* w x - (x!=nil)? PC-=w */ |
89 | IFFUPJMP,/* b x - (x==nil)? PC-=b */ | 94 | IFTUPJMP,/* b x - (x!=nil)? PC-=b */ |
90 | IFFUPJMPW,/* w x - (x==nil)? PC-=w */ | 95 | IFFUPJMPW,/* w x - (x==nil)? PC-=w */ |
96 | IFFUPJMP,/* b x - (x==nil)? PC-=b */ | ||
91 | 97 | ||
92 | CLOSURE,/* b c v_c...v_1 closure(CNST[b], v_c...v_1) */ | 98 | CLOSURE,/* b c v_c...v_1 closure(CNST[b], v_c...v_1) */ |
93 | 99 | ||
94 | CALLFUNC,/* b c v_c...v_1 f r_b...r_1 f(v1,...,v_c) */ | 100 | CALLFUNC,/* b c v_c...v_1 f r_b...r_1 f(v1,...,v_c) */ |
95 | 101 | ||
96 | RETCODE,/* b - - */ | ||
97 | |||
98 | SETLINE,/* b - - LINE=b */ | ||
99 | SETLINEW,/* w - - LINE=w */ | 102 | SETLINEW,/* w - - LINE=w */ |
100 | 103 | SETLINE /* b - - LINE=b */ | |
101 | POP /* b - - TOP-=(b+1) */ | ||
102 | 104 | ||
103 | } OpCode; | 105 | } OpCode; |
104 | 106 | ||