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