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