1 /*
2 ** $Id: lopcodes.c,v 1.49.1.1 2013/04/12 18:48:47 roberto Exp $
3 ** Opcodes for Lua virtual machine
4 ** See Copyright Notice in lua.h
5 */
6 
7 #define lopcodes_c
8 #define LUA_CORE
9 
10 #include "lopcodes.h"
11 
12 /* ORDER OP */
13 
14 LUAI_DDEF const char *const luaP_opnames[NUM_OPCODES + 1] = {
15 	"MOVE",
16 	"LOADK",
17 	"LOADKX",
18 	"LOADBOOL",
19 	"LOADNIL",
20 	"GETUPVAL",
21 	"GETTABUP",
22 	"GETTABLE",
23 	"SETTABUP",
24 	"SETUPVAL",
25 	"SETTABLE",
26 	"NEWTABLE",
27 	"SELF",
28 	"ADD",
29 	"SUB",
30 	"MUL",
31 	"DIV",
32 	"MOD",
33 	"POW",
34 	"UNM",
35 	"NOT",
36 	"LEN",
37 	"CONCAT",
38 	"JMP",
39 	"EQ",
40 	"LT",
41 	"LE",
42 	"TEST",
43 	"TESTSET",
44 	"CALL",
45 	"TAILCALL",
46 	"RETURN",
47 	"FORLOOP",
48 	"FORPREP",
49 	"TFORCALL",
50 	"TFORLOOP",
51 	"SETLIST",
52 	"CLOSURE",
53 	"VARARG",
54 	"EXTRAARG",
55 	NULL};
56 
57 #define opmode(t, a, b, c, m) (((t) << 7) | ((a) << 6) | ((b) << 4) | ((c) << 2) | (m))
58 
59 LUAI_DDEF const lu_byte luaP_opmodes[NUM_OPCODES] = {
60 	/*       T  A    B       C     mode		   opcode	*/
61 	opmode(0, 1, OpArgR, OpArgN, iABC) /* OP_MOVE */
62 	,
63 	opmode(0, 1, OpArgK, OpArgN, iABx) /* OP_LOADK */
64 	,
65 	opmode(0, 1, OpArgN, OpArgN, iABx) /* OP_LOADKX */
66 	,
67 	opmode(0, 1, OpArgU, OpArgU, iABC) /* OP_LOADBOOL */
68 	,
69 	opmode(0, 1, OpArgU, OpArgN, iABC) /* OP_LOADNIL */
70 	,
71 	opmode(0, 1, OpArgU, OpArgN, iABC) /* OP_GETUPVAL */
72 	,
73 	opmode(0, 1, OpArgU, OpArgK, iABC) /* OP_GETTABUP */
74 	,
75 	opmode(0, 1, OpArgR, OpArgK, iABC) /* OP_GETTABLE */
76 	,
77 	opmode(0, 0, OpArgK, OpArgK, iABC) /* OP_SETTABUP */
78 	,
79 	opmode(0, 0, OpArgU, OpArgN, iABC) /* OP_SETUPVAL */
80 	,
81 	opmode(0, 0, OpArgK, OpArgK, iABC) /* OP_SETTABLE */
82 	,
83 	opmode(0, 1, OpArgU, OpArgU, iABC) /* OP_NEWTABLE */
84 	,
85 	opmode(0, 1, OpArgR, OpArgK, iABC) /* OP_SELF */
86 	,
87 	opmode(0, 1, OpArgK, OpArgK, iABC) /* OP_ADD */
88 	,
89 	opmode(0, 1, OpArgK, OpArgK, iABC) /* OP_SUB */
90 	,
91 	opmode(0, 1, OpArgK, OpArgK, iABC) /* OP_MUL */
92 	,
93 	opmode(0, 1, OpArgK, OpArgK, iABC) /* OP_DIV */
94 	,
95 	opmode(0, 1, OpArgK, OpArgK, iABC) /* OP_MOD */
96 	,
97 	opmode(0, 1, OpArgK, OpArgK, iABC) /* OP_POW */
98 	,
99 	opmode(0, 1, OpArgR, OpArgN, iABC) /* OP_UNM */
100 	,
101 	opmode(0, 1, OpArgR, OpArgN, iABC) /* OP_NOT */
102 	,
103 	opmode(0, 1, OpArgR, OpArgN, iABC) /* OP_LEN */
104 	,
105 	opmode(0, 1, OpArgR, OpArgR, iABC) /* OP_CONCAT */
106 	,
107 	opmode(0, 0, OpArgR, OpArgN, iAsBx) /* OP_JMP */
108 	,
109 	opmode(1, 0, OpArgK, OpArgK, iABC) /* OP_EQ */
110 	,
111 	opmode(1, 0, OpArgK, OpArgK, iABC) /* OP_LT */
112 	,
113 	opmode(1, 0, OpArgK, OpArgK, iABC) /* OP_LE */
114 	,
115 	opmode(1, 0, OpArgN, OpArgU, iABC) /* OP_TEST */
116 	,
117 	opmode(1, 1, OpArgR, OpArgU, iABC) /* OP_TESTSET */
118 	,
119 	opmode(0, 1, OpArgU, OpArgU, iABC) /* OP_CALL */
120 	,
121 	opmode(0, 1, OpArgU, OpArgU, iABC) /* OP_TAILCALL */
122 	,
123 	opmode(0, 0, OpArgU, OpArgN, iABC) /* OP_RETURN */
124 	,
125 	opmode(0, 1, OpArgR, OpArgN, iAsBx) /* OP_FORLOOP */
126 	,
127 	opmode(0, 1, OpArgR, OpArgN, iAsBx) /* OP_FORPREP */
128 	,
129 	opmode(0, 0, OpArgN, OpArgU, iABC) /* OP_TFORCALL */
130 	,
131 	opmode(0, 1, OpArgR, OpArgN, iAsBx) /* OP_TFORLOOP */
132 	,
133 	opmode(0, 0, OpArgU, OpArgU, iABC) /* OP_SETLIST */
134 	,
135 	opmode(0, 1, OpArgU, OpArgN, iABx) /* OP_CLOSURE */
136 	,
137 	opmode(0, 1, OpArgU, OpArgN, iABC) /* OP_VARARG */
138 	,
139 	opmode(0, 0, OpArgU, OpArgU, iAx) /* OP_EXTRAARG */
140 };
141