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