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