diff options
Diffstat (limited to '')
| -rw-r--r-- | lopcodes.h | 31 |
1 files changed, 27 insertions, 4 deletions
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** $Id: lopcodes.h,v 1.2 1997/09/19 18:40:32 roberto Exp roberto $ | 2 | ** $Id: lopcodes.h,v 1.3 1997/09/19 21:17:52 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,6 +8,13 @@ | |||
| 8 | #define lopcodes_h | 8 | #define lopcodes_h |
| 9 | 9 | ||
| 10 | 10 | ||
| 11 | /* | ||
| 12 | ** NOTICE: variants of the same opcode (like PUSH0, PUSHBYTE, PUSHWORD) must | ||
| 13 | ** be consecutive: First, those with built-in parameters, then with byte | ||
| 14 | ** parameter and last with word parameter. | ||
| 15 | */ | ||
| 16 | |||
| 17 | |||
| 11 | typedef enum { | 18 | typedef enum { |
| 12 | /* name parm before after side effect | 19 | /* name parm before after side effect |
| 13 | -----------------------------------------------------------------------------*/ | 20 | -----------------------------------------------------------------------------*/ |
| @@ -15,15 +22,19 @@ ENDCODE, | |||
| 15 | 22 | ||
| 16 | PUSHNIL,/* - nil */ | 23 | PUSHNIL,/* - nil */ |
| 17 | PUSHNILS,/* b - nil_1...nil_b */ | 24 | PUSHNILS,/* b - nil_1...nil_b */ |
| 25 | |||
| 18 | PUSH0,/* - 0.0 */ | 26 | PUSH0,/* - 0.0 */ |
| 19 | PUSH1,/* - 1.0 */ | 27 | PUSH1,/* - 1.0 */ |
| 20 | PUSH2,/* - 2.0 */ | 28 | PUSH2,/* - 2.0 */ |
| 21 | PUSHBYTE,/* b - (float)b */ | 29 | PUSHBYTE,/* b - (float)b */ |
| 22 | PUSHWORD,/* w - (float)w */ | 30 | PUSHWORD,/* w - (float)w */ |
| 31 | |||
| 23 | PUSHCONSTANTB,/*b - CNST[b] */ | 32 | PUSHCONSTANTB,/*b - CNST[b] */ |
| 24 | PUSHCONSTANT,/* w - CNST[w] */ | 33 | PUSHCONSTANT,/* w - CNST[w] */ |
| 34 | |||
| 25 | PUSHUPVALUE0, | 35 | PUSHUPVALUE0, |
| 26 | PUSHUPVALUE,/* b - Closure[b] */ | 36 | PUSHUPVALUE,/* b - Closure[b] */ |
| 37 | |||
| 27 | PUSHLOCAL0,/* - LOC[0] */ | 38 | PUSHLOCAL0,/* - LOC[0] */ |
| 28 | PUSHLOCAL1,/* - LOC[1] */ | 39 | PUSHLOCAL1,/* - LOC[1] */ |
| 29 | PUSHLOCAL2,/* - LOC[2] */ | 40 | PUSHLOCAL2,/* - LOC[2] */ |
| @@ -35,10 +46,15 @@ PUSHLOCAL7,/* - LOC[7] */ | |||
| 35 | PUSHLOCAL8,/* - LOC[8] */ | 46 | PUSHLOCAL8,/* - LOC[8] */ |
| 36 | PUSHLOCAL9,/* - LOC[9] */ | 47 | PUSHLOCAL9,/* - LOC[9] */ |
| 37 | PUSHLOCAL,/* b - LOC[b] */ | 48 | PUSHLOCAL,/* b - LOC[b] */ |
| 38 | PUSHGLOBALB,/* b - VAR[CNST[b]] */ | 49 | |
| 39 | PUSHGLOBAL,/* w - VAR[CNST[w]] */ | 50 | GETGLOBALB,/* b - VAR[CNST[b]] */ |
| 51 | GETGLOBAL,/* w - VAR[CNST[w]] */ | ||
| 52 | |||
| 40 | GETTABLE,/* i t t[i] */ | 53 | GETTABLE,/* i t t[i] */ |
| 54 | |||
| 55 | PUSHSELFB,/* b t t t[CNST[b]] */ | ||
| 41 | PUSHSELF,/* w t t t[CNST[w]] */ | 56 | PUSHSELF,/* w t t t[CNST[w]] */ |
| 57 | |||
| 42 | CREATEARRAY,/* w - newarray(size = w) */ | 58 | CREATEARRAY,/* w - newarray(size = w) */ |
| 43 | 59 | ||
| 44 | SETLOCAL0,/* x - LOC[0]=x */ | 60 | SETLOCAL0,/* x - LOC[0]=x */ |
| @@ -52,10 +68,13 @@ SETLOCAL7,/* x - LOC[7]=x */ | |||
| 52 | SETLOCAL8,/* x - LOC[8]=x */ | 68 | SETLOCAL8,/* x - LOC[8]=x */ |
| 53 | SETLOCAL9,/* x - LOC[9]=x */ | 69 | SETLOCAL9,/* x - LOC[9]=x */ |
| 54 | SETLOCAL,/* b x - LOC[b]=x */ | 70 | SETLOCAL,/* b x - LOC[b]=x */ |
| 71 | |||
| 55 | SETGLOBALB,/* b x - VAR[CNST[b]]=x */ | 72 | SETGLOBALB,/* b x - VAR[CNST[b]]=x */ |
| 56 | SETGLOBAL,/* w x - VAR[CNST[w]]=x */ | 73 | SETGLOBAL,/* w x - VAR[CNST[w]]=x */ |
| 74 | |||
| 57 | SETTABLE0,/* v i t - t[i]=v */ | 75 | SETTABLE0,/* v i t - t[i]=v */ |
| 58 | SETTABLE,/* b v a_b...a_1 i t a_b...a_1 i t t[i]=v */ | 76 | SETTABLE,/* b v a_b...a_1 i t a_b...a_1 i t t[i]=v */ |
| 77 | |||
| 59 | SETLIST0,/* b v_b...v_1 t - t[i]=v_i */ | 78 | SETLIST0,/* b v_b...v_1 t - t[i]=v_i */ |
| 60 | SETLIST,/* b c v_b...v_1 t - t[i+c*FPF]=v_i */ | 79 | SETLIST,/* b c v_b...v_1 t - t[i+c*FPF]=v_i */ |
| 61 | SETMAP,/* b v_b k_b ...v_1 k_1 t t t[k_i]=v_i */ | 80 | SETMAP,/* b v_b k_b ...v_1 k_1 t t t[k_i]=v_i */ |
| @@ -82,10 +101,14 @@ UPJMP,/* w - - PC-=w */ | |||
| 82 | IFFJMP,/* w x - (x==nil)? PC+=w */ | 101 | IFFJMP,/* w x - (x==nil)? PC+=w */ |
| 83 | IFFUPJMP,/* w x - (x==nil)? PC-=w */ | 102 | IFFUPJMP,/* w x - (x==nil)? PC-=w */ |
| 84 | 103 | ||
| 85 | CLOSURE,/* f v_1...v_n c(f) */ | 104 | CLOSUREB,/* b v_1...v_n c(CNST[b]) */ |
| 105 | CLOSURE,/* w v_1...v_n c(CNST[w]) */ | ||
| 106 | |||
| 86 | CALLFUNC,/* b c v_b...v_1 f r_c...r_1 f(v1,...,v_b) */ | 107 | CALLFUNC,/* b c v_b...v_1 f r_c...r_1 f(v1,...,v_b) */ |
| 87 | RETCODE,/* b - - */ | 108 | RETCODE,/* b - - */ |
| 88 | SETLINE,/* w - - LINE=w */ | 109 | SETLINE,/* w - - LINE=w */ |
| 110 | POP1,/* - - TOP-=1 */ | ||
| 111 | POP2,/* - - TOP-=2 */ | ||
| 89 | POPS,/* b - - TOP-=b */ | 112 | POPS,/* b - - TOP-=b */ |
| 90 | ARGS,/* b - - TOP=BASE+b */ | 113 | ARGS,/* b - - TOP=BASE+b */ |
| 91 | VARARGS/* b v_x...v_1 {v_1...v_x;n=x} TOP=BASE+b+1 */ | 114 | VARARGS/* b v_x...v_1 {v_1...v_x;n=x} TOP=BASE+b+1 */ |
