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