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