diff options
| author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2017-09-28 13:53:29 -0300 |
|---|---|---|
| committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2017-09-28 13:53:29 -0300 |
| commit | 722bdbe17d0192baf72978f88069d12a921e9bfb (patch) | |
| tree | 78da619d4799721e67a760bf4220b568f636cb86 /lopcodes.c | |
| parent | 1b100335839e13021b4731f0407b87e4f7544dc0 (diff) | |
| download | lua-722bdbe17d0192baf72978f88069d12a921e9bfb.tar.gz lua-722bdbe17d0192baf72978f88069d12a921e9bfb.tar.bz2 lua-722bdbe17d0192baf72978f88069d12a921e9bfb.zip | |
no more 'getBMode'-'getCMode' (imprecise + we will need more space
for op mode) + better control of op modes
Diffstat (limited to 'lopcodes.c')
| -rw-r--r-- | lopcodes.c | 116 |
1 files changed, 57 insertions, 59 deletions
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** $Id: lopcodes.c,v 1.63 2017/09/19 18:38:14 roberto Exp roberto $ | 2 | ** $Id: lopcodes.c,v 1.64 2017/09/26 18:14:45 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 | */ |
| @@ -77,64 +77,62 @@ LUAI_DDEF const char *const luaP_opnames[NUM_OPCODES+1] = { | |||
| 77 | }; | 77 | }; |
| 78 | 78 | ||
| 79 | 79 | ||
| 80 | #define opmode(t,a,b,c,m) (((t)<<7) | ((a)<<6) | ((b)<<4) | ((c)<<2) | (m)) | ||
| 81 | |||
| 82 | LUAI_DDEF const lu_byte luaP_opmodes[NUM_OPCODES] = { | 80 | LUAI_DDEF const lu_byte luaP_opmodes[NUM_OPCODES] = { |
| 83 | /* T A B C mode opcode */ | 81 | /* T A mode opcode */ |
| 84 | opmode(0, 1, OpArgR, OpArgN, iABC) /* OP_MOVE */ | 82 | opmode(0, 1, iABC) /* OP_MOVE */ |
| 85 | ,opmode(0, 1, OpArgU, OpArgN, iAsBx) /* OP_LOADI */ | 83 | ,opmode(0, 1, iAsBx) /* OP_LOADI */ |
| 86 | ,opmode(0, 1, OpArgU, OpArgN, iAsBx) /* OP_LOADF */ | 84 | ,opmode(0, 1, iAsBx) /* OP_LOADF */ |
| 87 | ,opmode(0, 1, OpArgK, OpArgN, iABx) /* OP_LOADK */ | 85 | ,opmode(0, 1, iABx) /* OP_LOADK */ |
| 88 | ,opmode(0, 1, OpArgN, OpArgN, iABx) /* OP_LOADKX */ | 86 | ,opmode(0, 1, iABx) /* OP_LOADKX */ |
| 89 | ,opmode(0, 1, OpArgU, OpArgU, iABC) /* OP_LOADBOOL */ | 87 | ,opmode(0, 1, iABC) /* OP_LOADBOOL */ |
| 90 | ,opmode(0, 1, OpArgU, OpArgN, iABC) /* OP_LOADNIL */ | 88 | ,opmode(0, 1, iABC) /* OP_LOADNIL */ |
| 91 | ,opmode(0, 1, OpArgU, OpArgN, iABC) /* OP_GETUPVAL */ | 89 | ,opmode(0, 1, iABC) /* OP_GETUPVAL */ |
| 92 | ,opmode(0, 0, OpArgU, OpArgN, iABC) /* OP_SETUPVAL */ | 90 | ,opmode(0, 0, iABC) /* OP_SETUPVAL */ |
| 93 | ,opmode(0, 1, OpArgU, OpArgK, iABC) /* OP_GETTABUP */ | 91 | ,opmode(0, 1, iABC) /* OP_GETTABUP */ |
| 94 | ,opmode(0, 1, OpArgR, OpArgR, iABC) /* OP_GETTABLE */ | 92 | ,opmode(0, 1, iABC) /* OP_GETTABLE */ |
| 95 | ,opmode(0, 1, OpArgR, OpArgU, iABC) /* OP_GETI */ | 93 | ,opmode(0, 1, iABC) /* OP_GETI */ |
| 96 | ,opmode(0, 1, OpArgR, OpArgK, iABC) /* OP_GETFIELD */ | 94 | ,opmode(0, 1, iABC) /* OP_GETFIELD */ |
| 97 | ,opmode(0, 0, OpArgK, OpArgK, iABC) /* OP_SETTABUP */ | 95 | ,opmode(0, 0, iABC) /* OP_SETTABUP */ |
| 98 | ,opmode(0, 0, OpArgR, OpArgK, iABC) /* OP_SETTABLE */ | 96 | ,opmode(0, 0, iABC) /* OP_SETTABLE */ |
| 99 | ,opmode(0, 0, OpArgU, OpArgK, iABC) /* OP_SETI */ | 97 | ,opmode(0, 0, iABC) /* OP_SETI */ |
| 100 | ,opmode(0, 0, OpArgK, OpArgK, iABC) /* OP_SETFIELD */ | 98 | ,opmode(0, 0, iABC) /* OP_SETFIELD */ |
| 101 | ,opmode(0, 1, OpArgU, OpArgU, iABC) /* OP_NEWTABLE */ | 99 | ,opmode(0, 1, iABC) /* OP_NEWTABLE */ |
| 102 | ,opmode(0, 1, OpArgR, OpArgK, iABC) /* OP_SELF */ | 100 | ,opmode(0, 1, iABC) /* OP_SELF */ |
| 103 | ,opmode(0, 1, OpArgR, OpArgU, iABC) /* OP_ADDI */ | 101 | ,opmode(0, 1, iABC) /* OP_ADDI */ |
| 104 | ,opmode(0, 1, OpArgR, OpArgR, iABC) /* OP_ADD */ | 102 | ,opmode(0, 1, iABC) /* OP_ADD */ |
| 105 | ,opmode(0, 1, OpArgR, OpArgR, iABC) /* OP_SUB */ | 103 | ,opmode(0, 1, iABC) /* OP_SUB */ |
| 106 | ,opmode(0, 1, OpArgR, OpArgR, iABC) /* OP_MUL */ | 104 | ,opmode(0, 1, iABC) /* OP_MUL */ |
| 107 | ,opmode(0, 1, OpArgR, OpArgR, iABC) /* OP_MOD */ | 105 | ,opmode(0, 1, iABC) /* OP_MOD */ |
| 108 | ,opmode(0, 1, OpArgR, OpArgR, iABC) /* OP_POW */ | 106 | ,opmode(0, 1, iABC) /* OP_POW */ |
| 109 | ,opmode(0, 1, OpArgR, OpArgR, iABC) /* OP_DIV */ | 107 | ,opmode(0, 1, iABC) /* OP_DIV */ |
| 110 | ,opmode(0, 1, OpArgR, OpArgR, iABC) /* OP_IDIV */ | 108 | ,opmode(0, 1, iABC) /* OP_IDIV */ |
| 111 | ,opmode(0, 1, OpArgR, OpArgR, iABC) /* OP_BAND */ | 109 | ,opmode(0, 1, iABC) /* OP_BAND */ |
| 112 | ,opmode(0, 1, OpArgR, OpArgR, iABC) /* OP_BOR */ | 110 | ,opmode(0, 1, iABC) /* OP_BOR */ |
| 113 | ,opmode(0, 1, OpArgR, OpArgR, iABC) /* OP_BXOR */ | 111 | ,opmode(0, 1, iABC) /* OP_BXOR */ |
| 114 | ,opmode(0, 1, OpArgR, OpArgR, iABC) /* OP_SHL */ | 112 | ,opmode(0, 1, iABC) /* OP_SHL */ |
| 115 | ,opmode(0, 1, OpArgR, OpArgR, iABC) /* OP_SHR */ | 113 | ,opmode(0, 1, iABC) /* OP_SHR */ |
| 116 | ,opmode(0, 1, OpArgR, OpArgN, iABC) /* OP_UNM */ | 114 | ,opmode(0, 1, iABC) /* OP_UNM */ |
| 117 | ,opmode(0, 1, OpArgR, OpArgN, iABC) /* OP_BNOT */ | 115 | ,opmode(0, 1, iABC) /* OP_BNOT */ |
| 118 | ,opmode(0, 1, OpArgR, OpArgN, iABC) /* OP_NOT */ | 116 | ,opmode(0, 1, iABC) /* OP_NOT */ |
| 119 | ,opmode(0, 1, OpArgR, OpArgN, iABC) /* OP_LEN */ | 117 | ,opmode(0, 1, iABC) /* OP_LEN */ |
| 120 | ,opmode(0, 1, OpArgR, OpArgR, iABC) /* OP_CONCAT */ | 118 | ,opmode(0, 1, iABC) /* OP_CONCAT */ |
| 121 | ,opmode(0, 0, OpArgN, OpArgN, iABC) /* OP_CLOSE */ | 119 | ,opmode(0, 0, iABC) /* OP_CLOSE */ |
| 122 | ,opmode(0, 0, OpArgU, OpArgN, iAsBx) /* OP_JMP */ | 120 | ,opmode(0, 0, iAsBx) /* OP_JMP */ |
| 123 | ,opmode(1, 0, OpArgR, OpArgR, iABC) /* OP_EQ */ | 121 | ,opmode(1, 0, iABC) /* OP_EQ */ |
| 124 | ,opmode(1, 0, OpArgR, OpArgR, iABC) /* OP_LT */ | 122 | ,opmode(1, 0, iABC) /* OP_LT */ |
| 125 | ,opmode(1, 0, OpArgR, OpArgR, iABC) /* OP_LE */ | 123 | ,opmode(1, 0, iABC) /* OP_LE */ |
| 126 | ,opmode(1, 0, OpArgN, OpArgU, iABC) /* OP_TEST */ | 124 | ,opmode(1, 0, iABC) /* OP_TEST */ |
| 127 | ,opmode(1, 1, OpArgR, OpArgU, iABC) /* OP_TESTSET */ | 125 | ,opmode(1, 1, iABC) /* OP_TESTSET */ |
| 128 | ,opmode(0, 1, OpArgU, OpArgU, iABC) /* OP_CALL */ | 126 | ,opmode(0, 1, iABC) /* OP_CALL */ |
| 129 | ,opmode(0, 1, OpArgU, OpArgU, iABC) /* OP_TAILCALL */ | 127 | ,opmode(0, 1, iABC) /* OP_TAILCALL */ |
| 130 | ,opmode(0, 0, OpArgU, OpArgN, iABC) /* OP_RETURN */ | 128 | ,opmode(0, 0, iABC) /* OP_RETURN */ |
| 131 | ,opmode(0, 1, OpArgR, OpArgN, iABx) /* OP_FORLOOP */ | 129 | ,opmode(0, 1, iABx) /* OP_FORLOOP */ |
| 132 | ,opmode(0, 1, OpArgR, OpArgN, iABx) /* OP_FORPREP */ | 130 | ,opmode(0, 1, iABx) /* OP_FORPREP */ |
| 133 | ,opmode(0, 0, OpArgN, OpArgU, iABC) /* OP_TFORCALL */ | 131 | ,opmode(0, 0, iABC) /* OP_TFORCALL */ |
| 134 | ,opmode(0, 1, OpArgR, OpArgN, iABx) /* OP_TFORLOOP */ | 132 | ,opmode(0, 1, iABx) /* OP_TFORLOOP */ |
| 135 | ,opmode(0, 0, OpArgU, OpArgU, iABC) /* OP_SETLIST */ | 133 | ,opmode(0, 0, iABC) /* OP_SETLIST */ |
| 136 | ,opmode(0, 1, OpArgU, OpArgN, iABx) /* OP_CLOSURE */ | 134 | ,opmode(0, 1, iABx) /* OP_CLOSURE */ |
| 137 | ,opmode(0, 1, OpArgU, OpArgR, iABC) /* OP_VARARG */ | 135 | ,opmode(0, 1, iABC) /* OP_VARARG */ |
| 138 | ,opmode(0, 0, OpArgU, OpArgU, iAx) /* OP_EXTRAARG */ | 136 | ,opmode(0, 0, iAx) /* OP_EXTRAARG */ |
| 139 | }; | 137 | }; |
| 140 | 138 | ||
