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