diff options
Diffstat (limited to 'lopcodes.h')
-rw-r--r-- | lopcodes.h | 36 |
1 files changed, 22 insertions, 14 deletions
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | ** $Id: lopcodes.h,v 1.39 2000/02/11 16:52:54 roberto Exp roberto $ | 2 | ** $Id: lopcodes.h,v 1.40 2000/02/14 16:51:08 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 | */ |
@@ -47,6 +47,11 @@ | |||
47 | 47 | ||
48 | 48 | ||
49 | 49 | ||
50 | /* | ||
51 | ** K = U argument used as index to `kstr' | ||
52 | ** J = S argument used as jump offset (relative to pc of next instruction) | ||
53 | */ | ||
54 | |||
50 | typedef enum { | 55 | typedef enum { |
51 | /* name parm before after side effect | 56 | /* name parm before after side effect |
52 | -----------------------------------------------------------------------------*/ | 57 | -----------------------------------------------------------------------------*/ |
@@ -60,24 +65,25 @@ PUSHNIL,/* U - nil_0-nil_u */ | |||
60 | POP,/* U a_u-a_1 - */ | 65 | POP,/* U a_u-a_1 - */ |
61 | 66 | ||
62 | PUSHINT,/* S - (real)s */ | 67 | PUSHINT,/* S - (real)s */ |
63 | PUSHSTRING,/* U - KSTR[u] */ | 68 | PUSHSTRING,/* K - KSTR[k] */ |
64 | PUSHNUMBER,/* U - KNUM[u] */ | 69 | PUSHNUM,/* U - KNUM[u] */ |
70 | PUSHNEGNUM,/* U - -KNUM[u] */ | ||
65 | 71 | ||
66 | PUSHUPVALUE,/* U - Closure[u] */ | 72 | PUSHUPVALUE,/* U - Closure[u] */ |
67 | 73 | ||
68 | PUSHLOCAL,/* U - LOC[u] */ | 74 | PUSHLOCAL,/* U - LOC[u] */ |
69 | GETGLOBAL,/* U - VAR[CNST[u]] */ | 75 | GETGLOBAL,/* K - VAR[CNST[k]] */ |
70 | 76 | ||
71 | GETTABLE,/* - i t t[i] */ | 77 | GETTABLE,/* - i t t[i] */ |
72 | GETDOTTED,/* U t t[CNST[u]] */ | 78 | GETDOTTED,/* K t t[KSTR[k]] */ |
73 | PUSHSELF,/* U t t t[CNST[u]] */ | 79 | PUSHSELF,/* K t t t[KSTR[k]] */ |
74 | 80 | ||
75 | CREATETABLE,/* U - newarray(size = u) */ | 81 | CREATETABLE,/* U - newarray(size = u) */ |
76 | 82 | ||
77 | SETLOCAL,/* U x - LOC[u]=x */ | 83 | SETLOCAL,/* U x - LOC[u]=x */ |
78 | SETGLOBAL,/* U x - VAR[CNST[u]]=x */ | 84 | SETGLOBAL,/* K x - VAR[KSTR[k]]=x */ |
79 | SETTABLEPOP,/* - v i t - t[i]=v */ | 85 | SETTABLEPOP,/* - v i t - t[i]=v */ |
80 | SETTABLE,/* U v a_u-a_1 i t a_u-a_1 i t t[i]=v */ | 86 | SETTABLE,/* U v a_u-a_1 i t a_u-a_1 i t t[i]=v */ |
81 | 87 | ||
82 | SETLIST,/* A B v_b-v_0 t t t[i+a*FPF]=v_i */ | 88 | SETLIST,/* A B v_b-v_0 t t t[i+a*FPF]=v_i */ |
83 | SETMAP,/* U v_u k_u - v_0 k_0 t t t[k_i]=v_i */ | 89 | SETMAP,/* U v_u k_u - v_0 k_0 t t t[k_i]=v_i */ |
@@ -88,7 +94,9 @@ LTOP,/* - y x (x<y)? 1 : nil */ | |||
88 | LEOP,/* - y x (x<y)? 1 : nil */ | 94 | LEOP,/* - y x (x<y)? 1 : nil */ |
89 | GTOP,/* - y x (x>y)? 1 : nil */ | 95 | GTOP,/* - y x (x>y)? 1 : nil */ |
90 | GEOP,/* - y x (x>=y)? 1 : nil */ | 96 | GEOP,/* - y x (x>=y)? 1 : nil */ |
97 | |||
91 | ADDOP,/* - y x x+y */ | 98 | ADDOP,/* - y x x+y */ |
99 | ADDI,/* S x x+s */ | ||
92 | SUBOP,/* - y x x-y */ | 100 | SUBOP,/* - y x x-y */ |
93 | MULTOP,/* - y x x*y */ | 101 | MULTOP,/* - y x x*y */ |
94 | DIVOP,/* - y x x/y */ | 102 | DIVOP,/* - y x x/y */ |
@@ -97,11 +105,11 @@ CONCOP,/* - y x x..y */ | |||
97 | MINUSOP,/* - x -x */ | 105 | MINUSOP,/* - x -x */ |
98 | NOTOP,/* - x (x==nil)? 1 : nil */ | 106 | NOTOP,/* - x (x==nil)? 1 : nil */ |
99 | 107 | ||
100 | ONTJMP,/* S x (x!=nil)? x : - (x!=nil)? PC+=s */ | 108 | ONTJMP,/* J x (x!=nil)? x : - (x!=nil)? PC+=s */ |
101 | ONFJMP,/* S x (x==nil)? x : - (x==nil)? PC+=s */ | 109 | ONFJMP,/* J x (x==nil)? x : - (x==nil)? PC+=s */ |
102 | JMP,/* S - - PC+=s */ | 110 | JMP,/* J - - PC+=s */ |
103 | IFTJMP,/* S x - (x!=nil)? PC+=s */ | 111 | IFTJMP,/* J x - (x!=nil)? PC+=s */ |
104 | IFFJMP,/* S x - (x==nil)? PC+=s */ | 112 | IFFJMP,/* J x - (x==nil)? PC+=s */ |
105 | 113 | ||
106 | CLOSURE,/* A B v_b-v_1 closure(CNST[a], v_b-v_1) */ | 114 | CLOSURE,/* A B v_b-v_1 closure(CNST[a], v_b-v_1) */ |
107 | 115 | ||
@@ -111,7 +119,7 @@ SETLINE/* U - - LINE=u */ | |||
111 | 119 | ||
112 | 120 | ||
113 | #define RFIELDS_PER_FLUSH 32 /* records (SETMAP) */ | 121 | #define RFIELDS_PER_FLUSH 32 /* records (SETMAP) */ |
114 | #define LFIELDS_PER_FLUSH 64 /* FPF - lists (SETLIST) (<MAXARG_B) */ | 122 | #define LFIELDS_PER_FLUSH 64 /* FPF - lists (SETLIST) (<=MAXARG_B) */ |
115 | 123 | ||
116 | 124 | ||
117 | #endif | 125 | #endif |