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