- Main Page
- Related Pages
- Modules
- Data Structures
- Files

# lua/lopcodes.c

Go to the documentation of this file.

    00001 /*
    00002 ** $Id: lopcodes.c,v 1.37 2005/11/08 19:45:36 roberto Exp $
    00003 ** See Copyright Notice in lua.h
    00004 */
    00005
    00006
    00007 #define lopcodes_c
    00008 #define LUA_CORE
    00009
    00010
    00011 #include "lopcodes.h"
    00012
    00013
    00014 /* ORDER OP */
    00015
    00016 const char *const luaP_opnames[NUM_OPCODES+1] = {
    00017   "MOVE",
    00018   "LOADK",
    00019   "LOADBOOL",
    00020   "LOADNIL",
    00021   "GETUPVAL",
    00022   "GETGLOBAL",
    00023   "GETTABLE",
    00024   "SETGLOBAL",
    00025   "SETUPVAL",
    00026   "SETTABLE",
    00027   "NEWTABLE",
    00028   "SELF",
    00029   "ADD",
    00030   "SUB",
    00031   "MUL",
    00032   "DIV",
    00033   "MOD",
    00034   "POW",
    00035   "UNM",
    00036   "NOT",
    00037   "LEN",
    00038   "CONCAT",
    00039   "JMP",
    00040   "EQ",
    00041   "LT",
    00042   "LE",
    00043   "TEST",
    00044   "TESTSET",
    00045   "CALL",
    00046   "TAILCALL",
    00047   "RETURN",
    00048   "FORLOOP",
    00049   "FORPREP",
    00050   "TFORLOOP",
    00051   "SETLIST",
    00052   "CLOSE",
    00053   "CLOSURE",
    00054   "VARARG",
    00055   NULL
    00056 };
    00057
    00058
    00059 #define opmode(t,a,b,c,m) (((t)<<7) | ((a)<<6) | ((b)<<4) | ((c)<<2) | (m))
    00060
    00061 const lu_byte luaP_opmodes[NUM_OPCODES] = {
    00062 /*       T  A    B       C     mode                opcode       */
    00063   opmode(0, 1, OpArgR, OpArgN, iABC)            /* OP_MOVE */
    00064  ,opmode(0, 1, OpArgK, OpArgN, iABx)            /* OP_LOADK */
    00065  ,opmode(0, 1, OpArgU, OpArgU, iABC)            /* OP_LOADBOOL */
    00066  ,opmode(0, 1, OpArgR, OpArgN, iABC)            /* OP_LOADNIL */
    00067  ,opmode(0, 1, OpArgU, OpArgN, iABC)            /* OP_GETUPVAL */
    00068  ,opmode(0, 1, OpArgK, OpArgN, iABx)            /* OP_GETGLOBAL */
    00069  ,opmode(0, 1, OpArgR, OpArgK, iABC)            /* OP_GETTABLE */
    00070  ,opmode(0, 0, OpArgK, OpArgN, iABx)            /* OP_SETGLOBAL */
    00071  ,opmode(0, 0, OpArgU, OpArgN, iABC)            /* OP_SETUPVAL */
    00072  ,opmode(0, 0, OpArgK, OpArgK, iABC)            /* OP_SETTABLE */
    00073  ,opmode(0, 1, OpArgU, OpArgU, iABC)            /* OP_NEWTABLE */
    00074  ,opmode(0, 1, OpArgR, OpArgK, iABC)            /* OP_SELF */
    00075  ,opmode(0, 1, OpArgK, OpArgK, iABC)            /* OP_ADD */
    00076  ,opmode(0, 1, OpArgK, OpArgK, iABC)            /* OP_SUB */
    00077  ,opmode(0, 1, OpArgK, OpArgK, iABC)            /* OP_MUL */
    00078  ,opmode(0, 1, OpArgK, OpArgK, iABC)            /* OP_DIV */
    00079  ,opmode(0, 1, OpArgK, OpArgK, iABC)            /* OP_MOD */
    00080  ,opmode(0, 1, OpArgK, OpArgK, iABC)            /* OP_POW */
    00081  ,opmode(0, 1, OpArgR, OpArgN, iABC)            /* OP_UNM */
    00082  ,opmode(0, 1, OpArgR, OpArgN, iABC)            /* OP_NOT */
    00083  ,opmode(0, 1, OpArgR, OpArgN, iABC)            /* OP_LEN */
    00084  ,opmode(0, 1, OpArgR, OpArgR, iABC)            /* OP_CONCAT */
    00085  ,opmode(0, 0, OpArgR, OpArgN, iAsBx)           /* OP_JMP */
    00086  ,opmode(1, 0, OpArgK, OpArgK, iABC)            /* OP_EQ */
    00087  ,opmode(1, 0, OpArgK, OpArgK, iABC)            /* OP_LT */
    00088  ,opmode(1, 0, OpArgK, OpArgK, iABC)            /* OP_LE */
    00089  ,opmode(1, 1, OpArgR, OpArgU, iABC)            /* OP_TEST */
    00090  ,opmode(1, 1, OpArgR, OpArgU, iABC)            /* OP_TESTSET */
    00091  ,opmode(0, 1, OpArgU, OpArgU, iABC)            /* OP_CALL */
    00092  ,opmode(0, 1, OpArgU, OpArgU, iABC)            /* OP_TAILCALL */
    00093  ,opmode(0, 0, OpArgU, OpArgN, iABC)            /* OP_RETURN */
    00094  ,opmode(0, 1, OpArgR, OpArgN, iAsBx)           /* OP_FORLOOP */
    00095  ,opmode(0, 1, OpArgR, OpArgN, iAsBx)           /* OP_FORPREP */
    00096  ,opmode(1, 0, OpArgN, OpArgU, iABC)            /* OP_TFORLOOP */
    00097  ,opmode(0, 0, OpArgU, OpArgU, iABC)            /* OP_SETLIST */
    00098  ,opmode(0, 0, OpArgN, OpArgN, iABC)            /* OP_CLOSE */
    00099  ,opmode(0, 1, OpArgU, OpArgN, iABx)            /* OP_CLOSURE */
    00100  ,opmode(0, 1, OpArgU, OpArgN, iABC)            /* OP_VARARG */
    00101 };
    00102