aboutsummaryrefslogtreecommitdiff
path: root/lopcodes.c
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>2017-09-28 13:53:29 -0300
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>2017-09-28 13:53:29 -0300
commit722bdbe17d0192baf72978f88069d12a921e9bfb (patch)
tree78da619d4799721e67a760bf4220b568f636cb86 /lopcodes.c
parent1b100335839e13021b4731f0407b87e4f7544dc0 (diff)
downloadlua-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.c116
1 files changed, 57 insertions, 59 deletions
diff --git a/lopcodes.c b/lopcodes.c
index 9617b720..5051f2a8 100644
--- a/lopcodes.c
+++ b/lopcodes.c
@@ -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
82LUAI_DDEF const lu_byte luaP_opmodes[NUM_OPCODES] = { 80LUAI_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