diff options
| author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 1997-10-13 20:12:04 -0200 |
|---|---|---|
| committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 1997-10-13 20:12:04 -0200 |
| commit | 7c261a13b572fb0f7449f6cdf2b495d0e5bd57d5 (patch) | |
| tree | 026cbe3e25e1929f171d0f30ac7a588bfb29f573 /lopcodes.h | |
| parent | 2bb94d9e22f1f8ab2c00c9296a3920bebe4862bd (diff) | |
| download | lua-7c261a13b572fb0f7449f6cdf2b495d0e5bd57d5.tar.gz lua-7c261a13b572fb0f7449f6cdf2b495d0e5bd57d5.tar.bz2 lua-7c261a13b572fb0f7449f6cdf2b495d0e5bd57d5.zip | |
more uniform treatment to opcode variants.
Diffstat (limited to 'lopcodes.h')
| -rw-r--r-- | lopcodes.h | 117 |
1 files changed, 66 insertions, 51 deletions
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** $Id: lopcodes.h,v 1.6 1997/10/01 20:05:34 roberto Exp roberto $ | 2 | ** $Id: lopcodes.h,v 1.7 1997/10/06 14:51:11 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 | */ |
| @@ -9,9 +9,9 @@ | |||
| 9 | 9 | ||
| 10 | 10 | ||
| 11 | /* | 11 | /* |
| 12 | ** NOTICE: variants of the same opcode (like PUSH0, PUSHBYTE, PUSHWORD) must | 12 | ** NOTICE: variants of the same opcode must be consecutive: First, those |
| 13 | ** be consecutive: First, those with built-in parameters, then with byte | 13 | ** with byte parameter, then with built-in parameters, and last with |
| 14 | ** parameter and last with word parameter. | 14 | ** word parameter. |
| 15 | */ | 15 | */ |
| 16 | 16 | ||
| 17 | 17 | ||
| @@ -20,15 +20,16 @@ typedef enum { | |||
| 20 | -----------------------------------------------------------------------------*/ | 20 | -----------------------------------------------------------------------------*/ |
| 21 | ENDCODE,/* - - - */ | 21 | ENDCODE,/* - - - */ |
| 22 | 22 | ||
| 23 | PUSHNIL,/* - - nil */ | 23 | PUSHNIL,/* b - nil_0...nil_b */ |
| 24 | PUSHNILS,/* b - nil_1...nil_b */ | 24 | PUSHNIL0,/* - - nil */ |
| 25 | 25 | ||
| 26 | PUSH0,/* - - 0.0 */ | 26 | PUSHNUMBER,/* b - (float)b */ |
| 27 | PUSH1,/* - - 1.0 */ | 27 | PUSHNUMBER0,/* - - 0.0 */ |
| 28 | PUSH2,/* - - 2.0 */ | 28 | PUSHNUMBER1,/* - - 1.0 */ |
| 29 | PUSHBYTE,/* b - (float)b */ | 29 | PUSHNUMBER2,/* - - 2.0 */ |
| 30 | PUSHWORD,/* w - (float)w */ | 30 | PUSHNUMBERW,/* w - (float)w */ |
| 31 | 31 | ||
| 32 | PUSHCONSTANT,/* b - CNST[b] */ | ||
| 32 | PUSHCONSTANT0,/*- - CNST[0] */ | 33 | PUSHCONSTANT0,/*- - CNST[0] */ |
| 33 | PUSHCONSTANT1,/*- - CNST[1] */ | 34 | PUSHCONSTANT1,/*- - CNST[1] */ |
| 34 | PUSHCONSTANT2,/*- - CNST[2] */ | 35 | PUSHCONSTANT2,/*- - CNST[2] */ |
| @@ -37,15 +38,13 @@ PUSHCONSTANT4,/*- - CNST[4] */ | |||
| 37 | PUSHCONSTANT5,/*- - CNST[5] */ | 38 | PUSHCONSTANT5,/*- - CNST[5] */ |
| 38 | PUSHCONSTANT6,/*- - CNST[6] */ | 39 | PUSHCONSTANT6,/*- - CNST[6] */ |
| 39 | PUSHCONSTANT7,/*- - CNST[7] */ | 40 | PUSHCONSTANT7,/*- - CNST[7] */ |
| 40 | PUSHCONSTANT8,/*- - CNST[8] */ | 41 | PUSHCONSTANTW,/*w - CNST[w] */ |
| 41 | PUSHCONSTANT9,/*- - CNST[9] */ | ||
| 42 | PUSHCONSTANTB,/*b - CNST[b] */ | ||
| 43 | PUSHCONSTANT,/* w - CNST[w] */ | ||
| 44 | 42 | ||
| 43 | PUSHUPVALUE,/* b - Closure[b] */ | ||
| 45 | PUSHUPVALUE0,/* - - Closure[0] */ | 44 | PUSHUPVALUE0,/* - - Closure[0] */ |
| 46 | PUSHUPVALUE1,/* - - Closure[1] */ | 45 | PUSHUPVALUE1,/* - - Closure[1] */ |
| 47 | PUSHUPVALUE,/* b - Closure[b] */ | ||
| 48 | 46 | ||
| 47 | PUSHLOCAL,/* b - LOC[b] */ | ||
| 49 | PUSHLOCAL0,/* - - LOC[0] */ | 48 | PUSHLOCAL0,/* - - LOC[0] */ |
| 50 | PUSHLOCAL1,/* - - LOC[1] */ | 49 | PUSHLOCAL1,/* - - LOC[1] */ |
| 51 | PUSHLOCAL2,/* - - LOC[2] */ | 50 | PUSHLOCAL2,/* - - LOC[2] */ |
| @@ -54,10 +53,8 @@ PUSHLOCAL4,/* - - LOC[4] */ | |||
| 54 | PUSHLOCAL5,/* - - LOC[5] */ | 53 | PUSHLOCAL5,/* - - LOC[5] */ |
| 55 | PUSHLOCAL6,/* - - LOC[6] */ | 54 | PUSHLOCAL6,/* - - LOC[6] */ |
| 56 | PUSHLOCAL7,/* - - LOC[7] */ | 55 | PUSHLOCAL7,/* - - LOC[7] */ |
| 57 | PUSHLOCAL8,/* - - LOC[8] */ | ||
| 58 | PUSHLOCAL9,/* - - LOC[9] */ | ||
| 59 | PUSHLOCAL,/* b - LOC[b] */ | ||
| 60 | 56 | ||
| 57 | GETGLOBAL,/* b - VAR[CNST[b]] */ | ||
| 61 | GETGLOBAL0,/* - - VAR[CNST[0]] */ | 58 | GETGLOBAL0,/* - - VAR[CNST[0]] */ |
| 62 | GETGLOBAL1,/* - - VAR[CNST[1]] */ | 59 | GETGLOBAL1,/* - - VAR[CNST[1]] */ |
| 63 | GETGLOBAL2,/* - - VAR[CNST[2]] */ | 60 | GETGLOBAL2,/* - - VAR[CNST[2]] */ |
| @@ -66,19 +63,19 @@ GETGLOBAL4,/* - - VAR[CNST[4]] */ | |||
| 66 | GETGLOBAL5,/* - - VAR[CNST[5]] */ | 63 | GETGLOBAL5,/* - - VAR[CNST[5]] */ |
| 67 | GETGLOBAL6,/* - - VAR[CNST[6]] */ | 64 | GETGLOBAL6,/* - - VAR[CNST[6]] */ |
| 68 | GETGLOBAL7,/* - - VAR[CNST[7]] */ | 65 | GETGLOBAL7,/* - - VAR[CNST[7]] */ |
| 69 | GETGLOBAL8,/* - - VAR[CNST[8]] */ | 66 | GETGLOBALW,/* w - VAR[CNST[w]] */ |
| 70 | GETGLOBAL9,/* - - VAR[CNST[9]] */ | ||
| 71 | GETGLOBALB,/* b - VAR[CNST[b]] */ | ||
| 72 | GETGLOBAL,/* w - VAR[CNST[w]] */ | ||
| 73 | 67 | ||
| 74 | GETTABLE,/* - i t t[i] */ | 68 | GETTABLE,/* - i t t[i] */ |
| 75 | 69 | ||
| 76 | PUSHSELFB,/* b t t t[CNST[b]] */ | 70 | PUSHSELF,/* b t t t[CNST[b]] */ |
| 77 | PUSHSELF,/* w t t t[CNST[w]] */ | 71 | PUSHSELFW,/* w t t t[CNST[w]] */ |
| 78 | 72 | ||
| 79 | CREATEARRAYB,/* b - newarray(size = b) */ | 73 | CREATEARRAY,/* b - newarray(size = b) */ |
| 80 | CREATEARRAY,/* w - newarray(size = w) */ | 74 | CREATEARRAY0,/* - - newarray(size = 0) */ |
| 75 | CREATEARRAY1,/* - - newarray(size = 1) */ | ||
| 76 | CREATEARRAYW,/* w - newarray(size = w) */ | ||
| 81 | 77 | ||
| 78 | SETLOCAL,/* b x - LOC[b]=x */ | ||
| 82 | SETLOCAL0,/* - x - LOC[0]=x */ | 79 | SETLOCAL0,/* - x - LOC[0]=x */ |
| 83 | SETLOCAL1,/* - x - LOC[1]=x */ | 80 | SETLOCAL1,/* - x - LOC[1]=x */ |
| 84 | SETLOCAL2,/* - x - LOC[2]=x */ | 81 | SETLOCAL2,/* - x - LOC[2]=x */ |
| @@ -87,19 +84,28 @@ SETLOCAL4,/* - x - LOC[4]=x */ | |||
| 87 | SETLOCAL5,/* - x - LOC[5]=x */ | 84 | SETLOCAL5,/* - x - LOC[5]=x */ |
| 88 | SETLOCAL6,/* - x - LOC[6]=x */ | 85 | SETLOCAL6,/* - x - LOC[6]=x */ |
| 89 | SETLOCAL7,/* - x - LOC[7]=x */ | 86 | SETLOCAL7,/* - x - LOC[7]=x */ |
| 90 | SETLOCAL8,/* - x - LOC[8]=x */ | ||
| 91 | SETLOCAL9,/* - x - LOC[9]=x */ | ||
| 92 | SETLOCAL,/* b x - LOC[b]=x */ | ||
| 93 | 87 | ||
| 94 | SETGLOBALB,/* b x - VAR[CNST[b]]=x */ | 88 | SETGLOBAL,/* b x - VAR[CNST[b]]=x */ |
| 95 | SETGLOBAL,/* w x - VAR[CNST[w]]=x */ | 89 | SETGLOBAL0,/* - x - VAR[CNST[0]]=x */ |
| 90 | SETGLOBAL1,/* - x - VAR[CNST[1]]=x */ | ||
| 91 | SETGLOBAL2,/* - x - VAR[CNST[2]]=x */ | ||
| 92 | SETGLOBAL3,/* - x - VAR[CNST[3]]=x */ | ||
| 93 | SETGLOBAL4,/* - x - VAR[CNST[4]]=x */ | ||
| 94 | SETGLOBAL5,/* - x - VAR[CNST[5]]=x */ | ||
| 95 | SETGLOBAL6,/* - x - VAR[CNST[6]]=x */ | ||
| 96 | SETGLOBAL7,/* - x - VAR[CNST[7]]=x */ | ||
| 97 | SETGLOBALW,/* w x - VAR[CNST[w]]=x */ | ||
| 96 | 98 | ||
| 97 | SETTABLE0,/* - v i t - t[i]=v */ | 99 | SETTABLE0,/* - v i t - t[i]=v */ |
| 100 | |||
| 98 | SETTABLE,/* b v a_b...a_1 i t a_b...a_1 i t t[i]=v */ | 101 | SETTABLE,/* b v a_b...a_1 i t a_b...a_1 i t t[i]=v */ |
| 99 | 102 | ||
| 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 */ | 103 | 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 */ | 104 | SETLIST0,/* b v_b...v_1 t - t[i]=v_i */ |
| 105 | SETLISTW,/* w c v_b...v_1 t - t[i+c*FPF]=v_i */ | ||
| 106 | |||
| 107 | SETMAP,/* b v_b k_b ...v_0 k_0 t t t[k_i]=v_i */ | ||
| 108 | SETMAP0,/* - v_0 k_0 t t t[k_0]=v_0 */ | ||
| 103 | 109 | ||
| 104 | EQOP,/* - y x (x==y)? 1 : nil */ | 110 | EQOP,/* - y x (x==y)? 1 : nil */ |
| 105 | NEQOP,/* - y x (x~=y)? 1 : nil */ | 111 | NEQOP,/* - y x (x~=y)? 1 : nil */ |
| @@ -117,25 +123,34 @@ MINUSOP,/* - x -x */ | |||
| 117 | NOTOP,/* - x (x==nil)? 1 : nil */ | 123 | NOTOP,/* - x (x==nil)? 1 : nil */ |
| 118 | 124 | ||
| 119 | ONTJMP,/* b x (x!=nil)? x : - (x!=nil)? PC+=b */ | 125 | ONTJMP,/* b x (x!=nil)? x : - (x!=nil)? PC+=b */ |
| 126 | ONTJMPW,/* w x (x!=nil)? x : - (x!=nil)? PC+=w */ | ||
| 120 | ONFJMP,/* b x (x==nil)? x : - (x==nil)? PC+=b */ | 127 | ONFJMP,/* b x (x==nil)? x : - (x==nil)? PC+=b */ |
| 121 | JMPB,/* b - - PC+=b */ | 128 | ONFJMPW,/* w x (x==nil)? x : - (x==nil)? PC+=w */ |
| 122 | JMP,/* w - - PC+=w */ | 129 | JMP,/* b - - PC+=b */ |
| 123 | IFFJMPB,/* b x - (x==nil)? PC+=b */ | 130 | JMPW,/* w - - PC+=w */ |
| 124 | IFFJMP,/* w x - (x==nil)? PC+=w */ | 131 | IFFJMP,/* b x - (x==nil)? PC+=b */ |
| 125 | IFTUPJMPB,/* b x - (x!=nil)? PC-=b */ | 132 | IFFJMPW,/* w x - (x==nil)? PC+=w */ |
| 126 | IFTUPJMP,/* w x - (x!=nil)? PC-=w */ | 133 | IFTUPJMP,/* b x - (x!=nil)? PC-=b */ |
| 127 | IFFUPJMPB,/* b x - (x==nil)? PC-=b */ | 134 | IFTUPJMPW,/* w x - (x!=nil)? PC-=w */ |
| 128 | IFFUPJMP,/* w x - (x==nil)? PC-=w */ | 135 | IFFUPJMP,/* b x - (x==nil)? PC-=b */ |
| 129 | 136 | IFFUPJMPW,/* w x - (x==nil)? PC-=w */ | |
| 130 | CLOSUREB,/* b v_1...v_n c(CNST[b]) */ | 137 | |
| 131 | CLOSURE,/* w v_1...v_n c(CNST[w]) */ | 138 | CLOSURE,/* b v_1...v_n c(CNST[b]) */ |
| 132 | 139 | CLOSUREW,/* w v_1...v_n c(CNST[w]) */ | |
| 133 | CALLFUNC,/* b c v_b...v_1 f r_c...r_1 f(v1,...,v_b) */ | 140 | |
| 141 | CALLFUNC,/* b c v_c...v_1 f r_b...r_1 f(v1,...,v_c) */ | ||
| 142 | CALLFUNC0,/* b v_b...v_1 f - f(v1,...,v_b) */ | ||
| 143 | CALLFUNC1,/* b v_b...v_1 f r_1 f(v1,...,v_b) */ | ||
| 144 | |||
| 134 | RETCODE,/* b - - */ | 145 | RETCODE,/* b - - */ |
| 135 | SETLINE,/* w - - LINE=w */ | 146 | |
| 136 | POP1,/* - - - TOP-=1 */ | 147 | SETLINE,/* b - - LINE=b */ |
| 137 | POP2,/* - - - TOP-=2 */ | 148 | SETLINEW,/* w - - LINE=w */ |
| 138 | POPS,/* b - - TOP-=b */ | 149 | |
| 150 | POP,/* b - - TOP-=(b+1) */ | ||
| 151 | POP0,/* - - - TOP-=1 */ | ||
| 152 | POP1,/* - - - TOP-=2 */ | ||
| 153 | |||
| 139 | ARGS,/* b - - TOP=BASE+b */ | 154 | ARGS,/* b - - TOP=BASE+b */ |
| 140 | VARARGS/* b v_x...v_1 {v_1...v_x;n=x} TOP=BASE+b+1 */ | 155 | VARARGS/* b v_x...v_1 {v_1...v_x;n=x} TOP=BASE+b+1 */ |
| 141 | } OpCode; | 156 | } OpCode; |
