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