lcode.c中的luaK_opproperties的修改:
const struct OpProperties luaK_opproperties[NUM_OPCODES] = {
{0, 0, 0}, /* OP_NOP01 */
{0, 0, 0}, /* OP_NOP02 */
{iO, 0, 0}, /* OP_END */
{iU, 0, 0}, /* OP_RETURN */
{iAB, 0, 0}, /* OP_CALL */
{iAB, 0, 0}, /* OP_TAILCALL */
{iU, VD, 0}, /* OP_PUSHNIL */
{iU, VD, 0}, /* OP_POP */
{iU, 1, 0}, /* OP_PUSHNUM */
{iU, 1, 0}, /* OP_PUSHNEGNUM */
{iS, 1, 0}, /* OP_PUSHINT */
{iU, 1, 0}, /* OP_PUSHSTRING */
{iU, 1, 0}, /* OP_PUSHUPVALUE */
{iU, 1, 0}, /* OP_GETLOCAL */
{iU, 1, 0}, /* OP_GETGLOBAL */
{iU, 1, 1}, /* OP_GETINDEXED */
{iU, 2, 1}, /* OP_PUSHSELF */
{iO, 1, 2}, /* OP_GETTABLE */
{iU, 1, 1}, /* OP_GETDOTTED */
{iU, 1, 0}, /* OP_CREATETABLE */
{iU, 0, 1}, /* OP_SETGLOBAL */
{iU, 0, 1}, /* OP_SETLOCAL */
{iAB, VD, 0}, /* OP_SETTABLE */
{iAB, VD, 0}, /* OP_SETLIST */
{iU, VD, 0}, /* OP_SETMAP */
{iO, 1, 2}, /* OP_ADD */
{iS, 1, 1}, /* OP_ADDI */
{iO, 1, 2}, /* OP_SUB */
{iO, 1, 2}, /* OP_DIV */
{iO, 1, 2}, /* OP_POW */
{iO, 1, 2}, /* OP_MULT */
{iU, VD, 0}, /* OP_CONCAT */
{iO, 1, 1}, /* OP_MINUS */
{iO, 1, 1}, /* OP_NOT */
{iS, 0, 2}, /* OP_JMPNE */
{iS, 0, 2}, /* OP_JMPEQ */
{iS, 0, 2}, /* OP_JMPLT */
{iS, 0, 2}, /* OP_JMPLE */
{iS, 0, 2}, /* OP_JMPGT */
{iS, 0, 2}, /* OP_JMPGE */
{iS, 0, 1}, /* OP_JMPT */
{iS, 0, 1}, /* OP_JMPF */
{iS, 0, 1}, /* OP_JMPONT */
{iS, 0, 1}, /* OP_JMPONF */
{iS, 0, 0}, /* OP_JMP */
{iO, 0, 0}, /* OP_PUSHNILJMP */
{iS, 0, 0}, /* OP_FORPREP */
{iS, 0, 3}, /* OP_FORLOOP */
{iS, 2, 0}, /* OP_LFORPREP */
{iS, 0, 3}, /* OP_LFORLOOP */
{iAB, VD, 0} /* OP_CLOSURE */
};
|