xref: /aosp_15_r20/external/lua/src/lopcodes.c (revision 088332b5b69e7ab13924864b272aabfc2509d2d5)
1*088332b5SXin Li /*
2*088332b5SXin Li ** $Id: lopcodes.c $
3*088332b5SXin Li ** Opcodes for Lua virtual machine
4*088332b5SXin Li ** See Copyright Notice in lua.h
5*088332b5SXin Li */
6*088332b5SXin Li 
7*088332b5SXin Li #define lopcodes_c
8*088332b5SXin Li #define LUA_CORE
9*088332b5SXin Li 
10*088332b5SXin Li #include "lprefix.h"
11*088332b5SXin Li 
12*088332b5SXin Li 
13*088332b5SXin Li #include "lopcodes.h"
14*088332b5SXin Li 
15*088332b5SXin Li 
16*088332b5SXin Li /* ORDER OP */
17*088332b5SXin Li 
18*088332b5SXin Li LUAI_DDEF const lu_byte luaP_opmodes[NUM_OPCODES] = {
19*088332b5SXin Li /*       MM OT IT T  A  mode		   opcode  */
20*088332b5SXin Li   opmode(0, 0, 0, 0, 1, iABC)		/* OP_MOVE */
21*088332b5SXin Li  ,opmode(0, 0, 0, 0, 1, iAsBx)		/* OP_LOADI */
22*088332b5SXin Li  ,opmode(0, 0, 0, 0, 1, iAsBx)		/* OP_LOADF */
23*088332b5SXin Li  ,opmode(0, 0, 0, 0, 1, iABx)		/* OP_LOADK */
24*088332b5SXin Li  ,opmode(0, 0, 0, 0, 1, iABx)		/* OP_LOADKX */
25*088332b5SXin Li  ,opmode(0, 0, 0, 0, 1, iABC)		/* OP_LOADFALSE */
26*088332b5SXin Li  ,opmode(0, 0, 0, 0, 1, iABC)		/* OP_LFALSESKIP */
27*088332b5SXin Li  ,opmode(0, 0, 0, 0, 1, iABC)		/* OP_LOADTRUE */
28*088332b5SXin Li  ,opmode(0, 0, 0, 0, 1, iABC)		/* OP_LOADNIL */
29*088332b5SXin Li  ,opmode(0, 0, 0, 0, 1, iABC)		/* OP_GETUPVAL */
30*088332b5SXin Li  ,opmode(0, 0, 0, 0, 0, iABC)		/* OP_SETUPVAL */
31*088332b5SXin Li  ,opmode(0, 0, 0, 0, 1, iABC)		/* OP_GETTABUP */
32*088332b5SXin Li  ,opmode(0, 0, 0, 0, 1, iABC)		/* OP_GETTABLE */
33*088332b5SXin Li  ,opmode(0, 0, 0, 0, 1, iABC)		/* OP_GETI */
34*088332b5SXin Li  ,opmode(0, 0, 0, 0, 1, iABC)		/* OP_GETFIELD */
35*088332b5SXin Li  ,opmode(0, 0, 0, 0, 0, iABC)		/* OP_SETTABUP */
36*088332b5SXin Li  ,opmode(0, 0, 0, 0, 0, iABC)		/* OP_SETTABLE */
37*088332b5SXin Li  ,opmode(0, 0, 0, 0, 0, iABC)		/* OP_SETI */
38*088332b5SXin Li  ,opmode(0, 0, 0, 0, 0, iABC)		/* OP_SETFIELD */
39*088332b5SXin Li  ,opmode(0, 0, 0, 0, 1, iABC)		/* OP_NEWTABLE */
40*088332b5SXin Li  ,opmode(0, 0, 0, 0, 1, iABC)		/* OP_SELF */
41*088332b5SXin Li  ,opmode(0, 0, 0, 0, 1, iABC)		/* OP_ADDI */
42*088332b5SXin Li  ,opmode(0, 0, 0, 0, 1, iABC)		/* OP_ADDK */
43*088332b5SXin Li  ,opmode(0, 0, 0, 0, 1, iABC)		/* OP_SUBK */
44*088332b5SXin Li  ,opmode(0, 0, 0, 0, 1, iABC)		/* OP_MULK */
45*088332b5SXin Li  ,opmode(0, 0, 0, 0, 1, iABC)		/* OP_MODK */
46*088332b5SXin Li  ,opmode(0, 0, 0, 0, 1, iABC)		/* OP_POWK */
47*088332b5SXin Li  ,opmode(0, 0, 0, 0, 1, iABC)		/* OP_DIVK */
48*088332b5SXin Li  ,opmode(0, 0, 0, 0, 1, iABC)		/* OP_IDIVK */
49*088332b5SXin Li  ,opmode(0, 0, 0, 0, 1, iABC)		/* OP_BANDK */
50*088332b5SXin Li  ,opmode(0, 0, 0, 0, 1, iABC)		/* OP_BORK */
51*088332b5SXin Li  ,opmode(0, 0, 0, 0, 1, iABC)		/* OP_BXORK */
52*088332b5SXin Li  ,opmode(0, 0, 0, 0, 1, iABC)		/* OP_SHRI */
53*088332b5SXin Li  ,opmode(0, 0, 0, 0, 1, iABC)		/* OP_SHLI */
54*088332b5SXin Li  ,opmode(0, 0, 0, 0, 1, iABC)		/* OP_ADD */
55*088332b5SXin Li  ,opmode(0, 0, 0, 0, 1, iABC)		/* OP_SUB */
56*088332b5SXin Li  ,opmode(0, 0, 0, 0, 1, iABC)		/* OP_MUL */
57*088332b5SXin Li  ,opmode(0, 0, 0, 0, 1, iABC)		/* OP_MOD */
58*088332b5SXin Li  ,opmode(0, 0, 0, 0, 1, iABC)		/* OP_POW */
59*088332b5SXin Li  ,opmode(0, 0, 0, 0, 1, iABC)		/* OP_DIV */
60*088332b5SXin Li  ,opmode(0, 0, 0, 0, 1, iABC)		/* OP_IDIV */
61*088332b5SXin Li  ,opmode(0, 0, 0, 0, 1, iABC)		/* OP_BAND */
62*088332b5SXin Li  ,opmode(0, 0, 0, 0, 1, iABC)		/* OP_BOR */
63*088332b5SXin Li  ,opmode(0, 0, 0, 0, 1, iABC)		/* OP_BXOR */
64*088332b5SXin Li  ,opmode(0, 0, 0, 0, 1, iABC)		/* OP_SHL */
65*088332b5SXin Li  ,opmode(0, 0, 0, 0, 1, iABC)		/* OP_SHR */
66*088332b5SXin Li  ,opmode(1, 0, 0, 0, 0, iABC)		/* OP_MMBIN */
67*088332b5SXin Li  ,opmode(1, 0, 0, 0, 0, iABC)		/* OP_MMBINI*/
68*088332b5SXin Li  ,opmode(1, 0, 0, 0, 0, iABC)		/* OP_MMBINK*/
69*088332b5SXin Li  ,opmode(0, 0, 0, 0, 1, iABC)		/* OP_UNM */
70*088332b5SXin Li  ,opmode(0, 0, 0, 0, 1, iABC)		/* OP_BNOT */
71*088332b5SXin Li  ,opmode(0, 0, 0, 0, 1, iABC)		/* OP_NOT */
72*088332b5SXin Li  ,opmode(0, 0, 0, 0, 1, iABC)		/* OP_LEN */
73*088332b5SXin Li  ,opmode(0, 0, 0, 0, 1, iABC)		/* OP_CONCAT */
74*088332b5SXin Li  ,opmode(0, 0, 0, 0, 0, iABC)		/* OP_CLOSE */
75*088332b5SXin Li  ,opmode(0, 0, 0, 0, 0, iABC)		/* OP_TBC */
76*088332b5SXin Li  ,opmode(0, 0, 0, 0, 0, isJ)		/* OP_JMP */
77*088332b5SXin Li  ,opmode(0, 0, 0, 1, 0, iABC)		/* OP_EQ */
78*088332b5SXin Li  ,opmode(0, 0, 0, 1, 0, iABC)		/* OP_LT */
79*088332b5SXin Li  ,opmode(0, 0, 0, 1, 0, iABC)		/* OP_LE */
80*088332b5SXin Li  ,opmode(0, 0, 0, 1, 0, iABC)		/* OP_EQK */
81*088332b5SXin Li  ,opmode(0, 0, 0, 1, 0, iABC)		/* OP_EQI */
82*088332b5SXin Li  ,opmode(0, 0, 0, 1, 0, iABC)		/* OP_LTI */
83*088332b5SXin Li  ,opmode(0, 0, 0, 1, 0, iABC)		/* OP_LEI */
84*088332b5SXin Li  ,opmode(0, 0, 0, 1, 0, iABC)		/* OP_GTI */
85*088332b5SXin Li  ,opmode(0, 0, 0, 1, 0, iABC)		/* OP_GEI */
86*088332b5SXin Li  ,opmode(0, 0, 0, 1, 0, iABC)		/* OP_TEST */
87*088332b5SXin Li  ,opmode(0, 0, 0, 1, 1, iABC)		/* OP_TESTSET */
88*088332b5SXin Li  ,opmode(0, 1, 1, 0, 1, iABC)		/* OP_CALL */
89*088332b5SXin Li  ,opmode(0, 1, 1, 0, 1, iABC)		/* OP_TAILCALL */
90*088332b5SXin Li  ,opmode(0, 0, 1, 0, 0, iABC)		/* OP_RETURN */
91*088332b5SXin Li  ,opmode(0, 0, 0, 0, 0, iABC)		/* OP_RETURN0 */
92*088332b5SXin Li  ,opmode(0, 0, 0, 0, 0, iABC)		/* OP_RETURN1 */
93*088332b5SXin Li  ,opmode(0, 0, 0, 0, 1, iABx)		/* OP_FORLOOP */
94*088332b5SXin Li  ,opmode(0, 0, 0, 0, 1, iABx)		/* OP_FORPREP */
95*088332b5SXin Li  ,opmode(0, 0, 0, 0, 0, iABx)		/* OP_TFORPREP */
96*088332b5SXin Li  ,opmode(0, 0, 0, 0, 0, iABC)		/* OP_TFORCALL */
97*088332b5SXin Li  ,opmode(0, 0, 0, 0, 1, iABx)		/* OP_TFORLOOP */
98*088332b5SXin Li  ,opmode(0, 0, 1, 0, 0, iABC)		/* OP_SETLIST */
99*088332b5SXin Li  ,opmode(0, 0, 0, 0, 1, iABx)		/* OP_CLOSURE */
100*088332b5SXin Li  ,opmode(0, 1, 0, 0, 1, iABC)		/* OP_VARARG */
101*088332b5SXin Li  ,opmode(0, 0, 1, 0, 1, iABC)		/* OP_VARARGPREP */
102*088332b5SXin Li  ,opmode(0, 0, 0, 0, 0, iAx)		/* OP_EXTRAARG */
103*088332b5SXin Li };
104*088332b5SXin Li 
105