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