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