123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186 |
- /*
- ** $Id: lopcodes.c,v 1.81 2018/04/04 14:23:41 roberto Exp roberto $
- ** Opcodes for Lua virtual machine
- ** See Copyright Notice in lua.h
- */
- #define lopcodes_c
- #define LUA_CORE
- #include "lprefix.h"
- #include <stddef.h>
- #include "lopcodes.h"
- /* ORDER OP */
- #if defined(LUAI_DEFOPNAMES)
- LUAI_DDEF const char *const luaP_opnames[NUM_OPCODES+1] = {
- "MOVE",
- "LOADI",
- "LOADF",
- "LOADK",
- "LOADKX",
- "LOADBOOL",
- "LOADNIL",
- "GETUPVAL",
- "SETUPVAL",
- "GETTABUP",
- "GETTABLE",
- "GETI",
- "GETFIELD",
- "SETTABUP",
- "SETTABLE",
- "SETI",
- "SETFIELD",
- "NEWTABLE",
- "SELF",
- "ADDI",
- "SUBI",
- "MULI",
- "MODI",
- "POWI",
- "DIVI",
- "IDIVI",
- "BANDK",
- "BORK",
- "BXORK",
- "SHRI",
- "SHLI",
- "ADD",
- "SUB",
- "MUL",
- "MOD",
- "POW",
- "DIV",
- "IDIV",
- "BAND",
- "BOR",
- "BXOR",
- "SHL",
- "SHR",
- "UNM",
- "BNOT",
- "NOT",
- "LEN",
- "CONCAT",
- "CLOSE",
- "JMP",
- "EQ",
- "LT",
- "LE",
- "EQK",
- "EQI",
- "LTI",
- "LEI",
- "GTI",
- "GEI",
- "TEST",
- "TESTSET",
- "CALL",
- "TAILCALL",
- "RETURN",
- "RETURN0",
- "RETURN1",
- "FORLOOP1",
- "FORPREP1",
- "FORLOOP",
- "FORPREP",
- "TFORCALL",
- "TFORLOOP",
- "SETLIST",
- "CLOSURE",
- "VARARG",
- "PREPVARARG",
- "EXTRAARG",
- NULL
- };
- #endif
- LUAI_DDEF const lu_byte luaP_opmodes[NUM_OPCODES] = {
- /* OT IT T A mode opcode */
- opmode(0, 0, 0, 1, iABC) /* OP_MOVE */
- ,opmode(0, 0, 0, 1, iAsBx) /* OP_LOADI */
- ,opmode(0, 0, 0, 1, iAsBx) /* OP_LOADF */
- ,opmode(0, 0, 0, 1, iABx) /* OP_LOADK */
- ,opmode(0, 0, 0, 1, iABx) /* OP_LOADKX */
- ,opmode(0, 0, 0, 1, iABC) /* OP_LOADBOOL */
- ,opmode(0, 0, 0, 1, iABC) /* OP_LOADNIL */
- ,opmode(0, 0, 0, 1, iABC) /* OP_GETUPVAL */
- ,opmode(0, 0, 0, 0, iABC) /* OP_SETUPVAL */
- ,opmode(0, 0, 0, 1, iABC) /* OP_GETTABUP */
- ,opmode(0, 0, 0, 1, iABC) /* OP_GETTABLE */
- ,opmode(0, 0, 0, 1, iABC) /* OP_GETI */
- ,opmode(0, 0, 0, 1, iABC) /* OP_GETFIELD */
- ,opmode(0, 0, 0, 0, iABC) /* OP_SETTABUP */
- ,opmode(0, 0, 0, 0, iABC) /* OP_SETTABLE */
- ,opmode(0, 0, 0, 0, iABC) /* OP_SETI */
- ,opmode(0, 0, 0, 0, iABC) /* OP_SETFIELD */
- ,opmode(0, 0, 0, 1, iABC) /* OP_NEWTABLE */
- ,opmode(0, 0, 0, 1, iABC) /* OP_SELF */
- ,opmode(0, 0, 0, 1, iABC) /* OP_ADDI */
- ,opmode(0, 0, 0, 1, iABC) /* OP_SUBI */
- ,opmode(0, 0, 0, 1, iABC) /* OP_MULI */
- ,opmode(0, 0, 0, 1, iABC) /* OP_MODI */
- ,opmode(0, 0, 0, 1, iABC) /* OP_POWI */
- ,opmode(0, 0, 0, 1, iABC) /* OP_DIVI */
- ,opmode(0, 0, 0, 1, iABC) /* OP_IDIVI */
- ,opmode(0, 0, 0, 1, iABC) /* OP_BANDK */
- ,opmode(0, 0, 0, 1, iABC) /* OP_BORK */
- ,opmode(0, 0, 0, 1, iABC) /* OP_BXORK */
- ,opmode(0, 0, 0, 1, iABC) /* OP_SHRI */
- ,opmode(0, 0, 0, 1, iABC) /* OP_SHLI */
- ,opmode(0, 0, 0, 1, iABC) /* OP_ADD */
- ,opmode(0, 0, 0, 1, iABC) /* OP_SUB */
- ,opmode(0, 0, 0, 1, iABC) /* OP_MUL */
- ,opmode(0, 0, 0, 1, iABC) /* OP_MOD */
- ,opmode(0, 0, 0, 1, iABC) /* OP_POW */
- ,opmode(0, 0, 0, 1, iABC) /* OP_DIV */
- ,opmode(0, 0, 0, 1, iABC) /* OP_IDIV */
- ,opmode(0, 0, 0, 1, iABC) /* OP_BAND */
- ,opmode(0, 0, 0, 1, iABC) /* OP_BOR */
- ,opmode(0, 0, 0, 1, iABC) /* OP_BXOR */
- ,opmode(0, 0, 0, 1, iABC) /* OP_SHL */
- ,opmode(0, 0, 0, 1, iABC) /* OP_SHR */
- ,opmode(0, 0, 0, 1, iABC) /* OP_UNM */
- ,opmode(0, 0, 0, 1, iABC) /* OP_BNOT */
- ,opmode(0, 0, 0, 1, iABC) /* OP_NOT */
- ,opmode(0, 0, 0, 1, iABC) /* OP_LEN */
- ,opmode(0, 0, 0, 1, iABC) /* OP_CONCAT */
- ,opmode(0, 0, 0, 0, iABC) /* OP_CLOSE */
- ,opmode(0, 0, 0, 0, isJ) /* OP_JMP */
- ,opmode(0, 0, 1, 0, iABC) /* OP_EQ */
- ,opmode(0, 0, 1, 0, iABC) /* OP_LT */
- ,opmode(0, 0, 1, 0, iABC) /* OP_LE */
- ,opmode(0, 0, 1, 0, iABC) /* OP_EQK */
- ,opmode(0, 0, 1, 0, iABC) /* OP_EQI */
- ,opmode(0, 0, 1, 0, iABC) /* OP_LTI */
- ,opmode(0, 0, 1, 0, iABC) /* OP_LEI */
- ,opmode(0, 0, 1, 0, iABC) /* OP_GTI */
- ,opmode(0, 0, 1, 0, iABC) /* OP_GEI */
- ,opmode(0, 0, 1, 0, iABC) /* OP_TEST */
- ,opmode(0, 0, 1, 1, iABC) /* OP_TESTSET */
- ,opmode(1, 1, 0, 1, iABC) /* OP_CALL */
- ,opmode(1, 1, 0, 1, iABC) /* OP_TAILCALL */
- ,opmode(0, 1, 0, 0, iABC) /* OP_RETURN */
- ,opmode(0, 0, 0, 0, iABC) /* OP_RETURN0 */
- ,opmode(0, 0, 0, 0, iABC) /* OP_RETURN1 */
- ,opmode(0, 0, 0, 1, iABx) /* OP_FORLOOP1 */
- ,opmode(0, 0, 0, 1, iABx) /* OP_FORPREP1 */
- ,opmode(0, 0, 0, 1, iABx) /* OP_FORLOOP */
- ,opmode(0, 0, 0, 1, iABx) /* OP_FORPREP */
- ,opmode(0, 0, 0, 0, iABC) /* OP_TFORCALL */
- ,opmode(0, 0, 0, 1, iABx) /* OP_TFORLOOP */
- ,opmode(0, 1, 0, 0, iABC) /* OP_SETLIST */
- ,opmode(0, 0, 0, 1, iABx) /* OP_CLOSURE */
- ,opmode(1, 0, 0, 1, iABC) /* OP_VARARG */
- ,opmode(0, 0, 0, 1, iABC) /* OP_PREPVARARG */
- ,opmode(0, 0, 0, 0, iAx) /* OP_EXTRAARG */
- };
|