summaryrefslogtreecommitdiff
path: root/lopcodes.h
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>1999-02-02 17:41:17 -0200
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>1999-02-02 17:41:17 -0200
commit27407fc1f5fc4e0d97dadeda5939efa62fe7e380 (patch)
treea47a3f41547509627999963896b5ce3c8a335bf7 /lopcodes.h
parent1a17da2ff9dce06a0405f549522a4e08026c3124 (diff)
downloadlua-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.h46
1 files changed, 24 insertions, 22 deletions
diff --git a/lopcodes.h b/lopcodes.h
index 810d1ebe..66af79f1 100644
--- a/lopcodes.h
+++ b/lopcodes.h
@@ -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-----------------------------------------------------------------------------*/
22ENDCODE,/* - - - */ 22ENDCODE,/* - - - */
23RETCODE,/* b - - */
23 24
24PUSHNIL,/* b - nil_0...nil_b */ 25PUSHNIL,/* b - nil_0...nil_b */
26POP,/* b - - TOP-=(b+1) */
25 27
26PUSHNUMBER,/* b - (float)(b-NUMOFFSET) */
27PUSHNUMBERW,/* w - (float)(w-NUMOFFSET) */ 28PUSHNUMBERW,/* w - (float)(w-NUMOFFSET) */
29PUSHNUMBER,/* b - (float)(b-NUMOFFSET) */
28 30
29PUSHCONSTANT,/* b - CNST[b] */
30PUSHCONSTANTW,/*w - CNST[w] */ 31PUSHCONSTANTW,/*w - CNST[w] */
32PUSHCONSTANT,/* b - CNST[b] */
31 33
32PUSHUPVALUE,/* b - Closure[b] */ 34PUSHUPVALUE,/* b - Closure[b] */
33 35
34PUSHLOCAL,/* b - LOC[b] */ 36PUSHLOCAL,/* b - LOC[b] */
35 37
36GETGLOBAL,/* b - VAR[CNST[b]] */
37GETGLOBALW,/* w - VAR[CNST[w]] */ 38GETGLOBALW,/* w - VAR[CNST[w]] */
39GETGLOBAL,/* b - VAR[CNST[b]] */
38 40
39GETTABLE,/* - i t t[i] */ 41GETTABLE,/* - i t t[i] */
40 42
41GETDOTTED,/* b t t[CNST[b]] */
42GETDOTTEDW,/* w t t[CNST[w]] */ 43GETDOTTEDW,/* w t t[CNST[w]] */
44GETDOTTED,/* b t t[CNST[b]] */
43 45
44PUSHSELF,/* b t t t[CNST[b]] */
45PUSHSELFW,/* w t t t[CNST[w]] */ 46PUSHSELFW,/* w t t t[CNST[w]] */
47PUSHSELF,/* b t t t[CNST[b]] */
46 48
47CREATEARRAY,/* b - newarray(size = b) */
48CREATEARRAYW,/* w - newarray(size = w) */ 49CREATEARRAYW,/* w - newarray(size = w) */
50CREATEARRAY,/* b - newarray(size = b) */
49 51
50SETLOCAL,/* b x - LOC[b]=x */ 52SETLOCAL,/* b x - LOC[b]=x */
53SETLOCALDUP,/* b x x LOC[b]=x */
51 54
52SETGLOBAL,/* b x - VAR[CNST[b]]=x */
53SETGLOBALW,/* w x - VAR[CNST[w]]=x */ 55SETGLOBALW,/* w x - VAR[CNST[w]]=x */
56SETGLOBAL,/* b x - VAR[CNST[b]]=x */
57SETGLOBALDUPW,/*w x x VAR[CNST[w]]=x */
58SETGLOBALDUP,/* b x x VAR[CNST[b]]=x */
54 59
55SETTABLE0,/* - v i t - t[i]=v */ 60SETTABLE0,/* - v i t - t[i]=v */
61SETTABLEDUP,/* - v i t v t[i]=v */
56 62
57SETTABLE,/* b v a_b...a_1 i t a_b...a_1 i t t[i]=v */ 63SETTABLE,/* b v a_b...a_1 i t a_b...a_1 i t t[i]=v */
58 64
59SETLIST,/* b c v_c...v_1 t - t[i+b*FPF]=v_i */
60SETLISTW,/* w c v_c...v_1 t - t[i+w*FPF]=v_i */ 65SETLISTW,/* w c v_c...v_1 t - t[i+w*FPF]=v_i */
66SETLIST,/* b c v_c...v_1 t - t[i+b*FPF]=v_i */
61 67
62SETMAP,/* b v_b k_b ...v_0 k_0 t t t[k_i]=v_i */ 68SETMAP,/* b v_b k_b ...v_0 k_0 t t t[k_i]=v_i */
63 69
64EQOP,/* - y x (x==y)? 1 : nil */
65NEQOP,/* - y x (x~=y)? 1 : nil */ 70NEQOP,/* - y x (x~=y)? 1 : nil */
71EQOP,/* - y x (x==y)? 1 : nil */
66LTOP,/* - y x (x<y)? 1 : nil */ 72LTOP,/* - y x (x<y)? 1 : nil */
67LEOP,/* - y x (x<y)? 1 : nil */ 73LEOP,/* - y x (x<y)? 1 : nil */
68GTOP,/* - y x (x>y)? 1 : nil */ 74GTOP,/* - y x (x>y)? 1 : nil */
@@ -76,29 +82,25 @@ CONCOP,/* - y x x..y */
76MINUSOP,/* - x -x */ 82MINUSOP,/* - x -x */
77NOTOP,/* - x (x==nil)? 1 : nil */ 83NOTOP,/* - x (x==nil)? 1 : nil */
78 84
79ONTJMP,/* b x (x!=nil)? x : - (x!=nil)? PC+=b */
80ONTJMPW,/* w x (x!=nil)? x : - (x!=nil)? PC+=w */ 85ONTJMPW,/* w x (x!=nil)? x : - (x!=nil)? PC+=w */
81ONFJMP,/* b x (x==nil)? x : - (x==nil)? PC+=b */ 86ONTJMP,/* b x (x!=nil)? x : - (x!=nil)? PC+=b */
82ONFJMPW,/* w x (x==nil)? x : - (x==nil)? PC+=w */ 87ONFJMPW,/* w x (x==nil)? x : - (x==nil)? PC+=w */
83JMP,/* b - - PC+=b */ 88ONFJMP,/* b x (x==nil)? x : - (x==nil)? PC+=b */
84JMPW,/* w - - PC+=w */ 89JMPW,/* w - - PC+=w */
85IFFJMP,/* b x - (x==nil)? PC+=b */ 90JMP,/* b - - PC+=b */
86IFFJMPW,/* w x - (x==nil)? PC+=w */ 91IFFJMPW,/* w x - (x==nil)? PC+=w */
87IFTUPJMP,/* b x - (x!=nil)? PC-=b */ 92IFFJMP,/* b x - (x==nil)? PC+=b */
88IFTUPJMPW,/* w x - (x!=nil)? PC-=w */ 93IFTUPJMPW,/* w x - (x!=nil)? PC-=w */
89IFFUPJMP,/* b x - (x==nil)? PC-=b */ 94IFTUPJMP,/* b x - (x!=nil)? PC-=b */
90IFFUPJMPW,/* w x - (x==nil)? PC-=w */ 95IFFUPJMPW,/* w x - (x==nil)? PC-=w */
96IFFUPJMP,/* b x - (x==nil)? PC-=b */
91 97
92CLOSURE,/* b c v_c...v_1 closure(CNST[b], v_c...v_1) */ 98CLOSURE,/* b c v_c...v_1 closure(CNST[b], v_c...v_1) */
93 99
94CALLFUNC,/* b c v_c...v_1 f r_b...r_1 f(v1,...,v_c) */ 100CALLFUNC,/* b c v_c...v_1 f r_b...r_1 f(v1,...,v_c) */
95 101
96RETCODE,/* b - - */
97
98SETLINE,/* b - - LINE=b */
99SETLINEW,/* w - - LINE=w */ 102SETLINEW,/* w - - LINE=w */
100 103SETLINE /* b - - LINE=b */
101POP /* b - - TOP-=(b+1) */
102 104
103} OpCode; 105} OpCode;
104 106