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