diff options
| author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2000-02-22 11:31:43 -0200 |
|---|---|---|
| committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2000-02-22 11:31:43 -0200 |
| commit | 3bc925138ebcb534f863b3fb32b21eb8d52aa915 (patch) | |
| tree | 6fcbc3bf92357a5e2e1651bc38c79b9bbea42a51 /lopcodes.h | |
| parent | 39e1f079bdf045d64ad6f1b5da1eb48cc79c6c38 (diff) | |
| download | lua-3bc925138ebcb534f863b3fb32b21eb8d52aa915.tar.gz lua-3bc925138ebcb534f863b3fb32b21eb8d52aa915.tar.bz2 lua-3bc925138ebcb534f863b3fb32b21eb8d52aa915.zip | |
first version of code optimizer
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 |
