diff options
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 | ||
