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