root/core/wopcodes.cpp

/* [<][>][^][v][top][bottom][index][help] */
/* ***** BEGIN LICENSE BLOCK *****
 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
 *
 * The contents of this file are subject to the Mozilla Public License Version
 * 1.1 (the "License"); you may not use this file except in compliance with
 * the License. You may obtain a copy of the License at
 * http://www.mozilla.org/MPL/
 *
 * Software distributed under the License is distributed on an "AS IS" basis,
 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
 * for the specific language governing rights and limitations under the
 * License.
 *
 * The Original Code is [Open Source Virtual Machine.].
 *
 * The Initial Developer of the Original Code is
 * Adobe System Incorporated.
 * Portions created by the Initial Developer are Copyright (C) 2004-2006
 * the Initial Developer. All Rights Reserved.
 *
 * Contributor(s):
 *   Adobe AS3 Team
 *
 * Alternatively, the contents of this file may be used under the terms of
 * either the GNU General Public License Version 2 or later (the "GPL"), or
 * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
 * in which case the provisions of the GPL or the LGPL are applicable instead
 * of those above. If you wish to allow use of your version of this file only
 * under the terms of either the GPL or the LGPL, and not to allow others to
 * use your version of this file under the terms of the MPL, indicate your
 * decision by deleting the provisions above and replace them with the notice
 * and other provisions required by the GPL or the LGPL. If you do not delete
 * the provisions above, a recipient may use your version of this file under
 * the terms of any one of the MPL, the GPL or the LGPL.
 *
 * ***** END LICENSE BLOCK ***** */


#include "avmplus.h"

namespace avmplus
{

#ifdef AVMPLUS_WORD_CODE

#if defined _DEBUG || defined DEBUGGER || defined AVMPLUS_VERBOSE
#  define N(x)  , x
#else
#  define N(x)
#endif

        const WordOpcodeAttr wopAttrs[] = 
        {
                // The table is sorted by WordOpcode (see wopcodes.h).
                //
                // The word opcodes will be re-sorted in the near future, please
                // do not depend on ranges that are implicit in this table (eg for
                // the jump opcodes).  Always check the attribute bits.

                // PLEASE NOTE that utils/peephole.as extract information from this
                // table, so keep each row on a separate line, and keep the BEGIN
                // and END lines in place.  Comment lines, blank lines, and
                // trailing '//' comments are OK.  If you add fields you may also
                // need to change the regex that parses this table, in peephole.as,
                // as it knows the order and extracts some of them.
                //
                // DO NOT INSERT #ifdef ... #endif BLOCKS!!

                // width=0 means the instruction is not used in the word-code interpreter; other 
                //    attrs should be 0.  Otherwise it's the width in words of the instruction
                //    including the opcode.  Current limit is 7.  Only lookupswitch is variable length
                // jumps=1 means a branch relative to the end of the instruction, offset is 2nd word always
                // term=1  means the instruction terminates control flow (return, throw, lookupswitch)
                // thro=1  means the instruction may throw an exception
                // calls=1 means the topmost value on the stack is an argument count
                // push=n means the instruction pushes n values (after popping).  Current limit is 7
                // pop=n means the instruction pops n values.  Current limit is 3
                // pop_ex=1 means the instruction may pop more values than shown in the pop column,
                //    there is custom logic elsewhere to handle it.  Usually it means there is a
                //    multiname operand
                // use_l=1 means the instruction reads a local slot
                // def_l=1 means the instruction writes a local slot

                // You may assume that the instructions that may invoke user code comprise a subset of
            // the ones that are marked as thro=1.  A few of the latter will not call user code, 
                // but at this point we have no formal definition of whether e.g. embedders may
                // or may not subclass MethodEnv in such a way that MethodEnv::findproperty()
                // may call user code.  So there is no separate column for whether such a call may
                // take place.

                // DO NOT ALTER OR MOVE THE NEXT LINE.
                // BEGIN
                // width jumps term thro calls push pop pop_ex use_l def_l       name
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0x00") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0x01") },
                {    1,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("nop") },             // nop
                {    1,    0,    1,   1,    0,   0,   1,   0,    0,    0         N("throw") },
                {    2,    0,    0,   1,    0,   1,   1,   1,    0,    0         N("getsuper") },
                {    2,    0,    0,   1,    0,   0,   2,   1,    0,    0         N("setsuper") },
                {    2,    0,    0,   1,    0,   0,   0,   0,    0,    0         N("dxns") },
                {    1,    0,    0,   1,    0,   0,   1,   0,    0,    0         N("dxnslate") },
                {    2,    0,    0,   0,    0,   0,   0,   0,    1,    1         N("kill") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0x09") },            // label
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0x0A") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0x0B") },
                {    2,    1,    0,   1,    0,   0,   2,   0,    0,    0         N("ifnlt") },
                {    2,    1,    0,   1,    0,   0,   2,   0,    0,    0         N("ifnle") },
                {    2,    1,    0,   1,    0,   0,   2,   0,    0,    0         N("ifngt") },
                {    2,    1,    0,   1,    0,   0,   2,   0,    0,    0         N("ifnge") },
                {    2,    1,    1,   0,    0,   0,   0,   0,    0,    0         N("jump") },            // 0x10
                {    2,    1,    0,   0,    0,   0,   1,   0,    0,    0         N("iftrue") },
                {    2,    1,    0,   0,    0,   0,   1,   0,    0,    0         N("iffalse") },
                {    2,    1,    0,   1,    0,   0,   2,   0,    0,    0         N("ifeq") },
                {    2,    1,    0,   1,    0,   0,   2,   0,    0,    0         N("ifne") },
                {    2,    1,    0,   1,    0,   0,   2,   0,    0,    0         N("iflt") },
                {    2,    1,    0,   1,    0,   0,   2,   0,    0,    0         N("ifle") },
                {    2,    1,    0,   1,    0,   0,   2,   0,    0,    0         N("ifgt") },
                {    2,    1,    0,   1,    0,   0,   2,   0,    0,    0         N("ifge") },
                {    2,    1,    0,   0,    0,   0,   2,   0,    0,    0         N("ifstricteq") },
                {    2,    1,    0,   0,    0,   0,   2,   0,    0,    0         N("ifstrictne") },
                {    3,    1,    1,   0,    0,   0,   1,   0,    0,    0         N("lookupswitch") },    // NOTE, variable length beyond 3rd word
                {    1,    0,    0,   0,    0,   0,   1,   0,    0,    0         N("pushwith") },
                {    1,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("popscope") },
                {    1,    0,    0,   1,    0,   1,   2,   0,    0,    0         N("nextname") },
                {    1,    0,    0,   1,    0,   1,   2,   0,    0,    0         N("hasnext") },
                {    1,    0,    0,   0,    0,   1,   0,   0,    0,    0         N("pushnull") },        // 0x20
                {    1,    0,    0,   0,    0,   1,   0,   0,    0,    0         N("pushundefined") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0x22") },
                {    1,    0,    0,   1,    0,   1,   2,   0,    0,    0         N("nextvalue") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0x24") },            // pushbyte
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0x25") },            // pushshort
                {    1,    0,    0,   0,    0,   1,   0,   0,    0,    0         N("pushtrue") },
                {    1,    0,    0,   0,    0,   1,   0,   0,    0,    0         N("pushfalse") },
                {    1,    0,    0,   0,    0,   1,   0,   0,    0,    0         N("pushnan") },
                {    1,    0,    0,   0,    0,   0,   1,   0,    0,    0         N("pop") },
                {    1,    0,    0,   0,    0,   2,   1,   0,    0,    0         N("dup") },
                {    1,    0,    0,   0,    0,   2,   2,   0,    0,    0         N("swap") },
                {    2,    0,    0,   0,    0,   1,   0,   0,    0,    0         N("pushstring") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0x2D") },            // pushint
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0x2E") },            // pushuint
                {    2,    0,    0,   0,    0,   1,   0,   0,    0,    0         N("pushdouble") },
                {    1,    0,    0,   0,    0,   0,   1,   0,    0,    0         N("pushscope") },       // 0x30
                {    2,    0,    0,   0,    0,   1,   0,   0,    0,    0         N("pushnamespace") },
                {    3,    0,    0,   1,    0,   1,   0,   0,    0,    0         N("hasnext2") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0x33") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0x34") },
                {    1,    0,    0,   1,    0,   1,   1,   0,    0,    0         N("li8") }, 
                {    1,    0,    0,   1,    0,   1,   1,   0,    0,    0         N("li16") },
                {    1,    0,    0,   1,    0,   1,   1,   0,    0,    0         N("li32") },
                {    1,    0,    0,   1,    0,   1,   1,   0,    0,    0         N("lf32") },
                {    1,    0,    0,   1,    0,   1,   1,   0,    0,    0         N("lf64") },
                {    1,    0,    0,   1,    0,   0,   2,   0,    0,    0         N("si8") },
                {    1,    0,    0,   1,    0,   0,   2,   0,    0,    0         N("si16") },
                {    1,    0,    0,   1,    0,   0,   2,   0,    0,    0         N("si32") },
                {    1,    0,    0,   1,    0,   0,   2,   0,    0,    0         N("sf32") },
                {    1,    0,    0,   1,    0,   0,   2,   0,    0,    0         N("sf64") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0x3F") },
                {    2,    0,    0,   1,    0,   1,   0,   0,    0,    0         N("newfunction") },     // 0x40
                {    2,    0,    0,   1,    1,   1,   2,   0,    0,    0         N("call") },
                {    2,    0,    0,   1,    1,   1,   1,   0,    0,    0         N("construct") },
                {    3,    0,    0,   1,    1,   1,   1,   0,    0,    0         N("callmethod") },
                {    3,    0,    0,   1,    1,   1,   1,   0,    0,    0         N("callstatic") },
                {    3,    0,    0,   1,    1,   1,   1,   1,    0,    0         N("callsuper") },
                {    3,    0,    0,   1,    1,   1,   1,   1,    0,    0         N("callproperty") },
                {    1,    0,    1,   0,    0,   0,   0,   0,    0,    0         N("returnvoid") },
                {    1,    0,    1,   0,    0,   0,   1,   0,    0,    0         N("returnvalue") },
                {    2,    0,    0,   1,    1,   0,   1,   0,    0,    0         N("constructsuper") },
                {    3,    0,    0,   1,    1,   1,   1,   1,    0,    0         N("constructprop") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0x4B") },            // callsuperid
                {    3,    0,    0,   1,    1,   1,   1,   1,    0,    0         N("callproplex") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0x4D") },            // callinterface
                {    3,    0,    0,   1,    1,   0,   1,   1,    0,    0         N("callsupervoid") },
                {    3,    0,    0,   1,    1,   0,   1,   1,    0,    0         N("callpropvoid") },
                {    1,    0,    0,   0,    0,   1,   1,   0,    0,    0         N("sxi1") },    
                {    1,    0,    0,   0,    0,   1,   1,   0,    0,    0         N("sxi8") },
                {    1,    0,    0,   0,    0,   1,   1,   0,    0,    0         N("sxi16") },
                {    2,    0,    0,   1,    0,   1,   1,   0,    0,    0         N("applytype") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0x54") },
                {    2,    0,    0,   1,    1,   1,   0,   0,    0,    0         N("newobject") },
                {    2,    0,    0,   1,    1,   1,   0,   0,    0,    0         N("newarray") },
                {    1,    0,    0,   1,    0,   1,   0,   0,    0,    0         N("newactivation") },
                {    2,    0,    0,   1,    0,   1,   1,   0,    0,    0         N("newclass") },
                {    2,    0,    0,   1,    0,   1,   1,   1,    0,    0         N("getdescendants") },
                {    2,    0,    0,   1,    0,   1,   0,   0,    0,    0         N("newcatch") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0x5B") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0x5C") },
                {    2,    0,    0,   1,    0,   1,   0,   1,    0,    0         N("findpropstrict") },
                {    2,    0,    0,   1,    0,   1,   0,   1,    0,    0         N("findproperty") },
                {    2,    0,    0,   1,    0,   1,   0,   0,    0,    0         N("finddef") },
                {    2,    0,    0,   1,    0,   1,   0,   0,    0,    0         N("getlex") },          // 0x60
                {    2,    0,    0,   1,    0,   0,   2,   1,    0,    0         N("setproperty") },
                {    2,    0,    0,   0,    0,   1,   0,   0,    1,    0         N("getlocal") },
                {    2,    0,    0,   0,    0,   0,   1,   0,    0,    1         N("setlocal") },
                {    1,    0,    0,   0,    0,   1,   0,   0,    0,    0         N("getglobalscope") },
                {    2,    0,    0,   0,    0,   1,   0,   0,    0,    0         N("getscopeobject") },
                {    2,    0,    0,   1,    0,   1,   1,   1,    0,    0         N("getproperty") },
                {    2,    0,    0,   0,    0,   1,   0,   0,    0,    0         N("getouterscope") },
                {    2,    0,    0,   1,    0,   0,   2,   1,    0,    0         N("initproperty") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0x69") },
                {    2,    0,    0,   1,    0,   1,   1,   1,    0,    0         N("deleteproperty") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0x6B") },
                {    2,    0,    0,   1,    0,   1,   1,   0,    0,    0         N("getslot") },
                {    2,    0,    0,   1,    0,   0,   2,   0,    0,    0         N("setslot") },
                {    2,    0,    0,   0,    0,   1,   0,   0,    0,    0         N("getglobalslot") },
                {    2,    0,    0,   0,    0,   0,   1,   0,    0,    0         N("setglobalslot") },
                {    1,    0,    0,   1,    0,   1,   1,   0,    0,    0         N("convert_s") },       // 0x70
                {    1,    0,    0,   1,    0,   1,   1,   0,    0,    0         N("esc_xelem") },
                {    1,    0,    0,   1,    0,   1,   1,   0,    0,    0         N("esc_xattr") },
                {    1,    0,    0,   1,    0,   1,   1,   0,    0,    0         N("convert_i") },
                {    1,    0,    0,   1,    0,   1,   1,   0,    0,    0         N("convert_u") },
                {    1,    0,    0,   1,    0,   1,   1,   0,    0,    0         N("convert_d") },
                {    1,    0,    0,   1,    0,   1,   1,   0,    0,    0         N("convert_b") },
                {    1,    0,    0,   1,    0,   1,   1,   0,    0,    0         N("convert_o") },
                {    1,    0,    0,   1,    0,   1,   1,   0,    0,    0         N("checkfilter") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0x79") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0x7A") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0x7B") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0x7C") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0x7D") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0x7E") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0x7F") },
                {    2,    0,    0,   1,    0,   1,   1,   0,    0,    0         N("coerce") },          // 0x80
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0x81") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0x82") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0x83") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0x84") },
                {    1,    0,    0,   1,    0,   1,   1,   0,    0,    0         N("coerce_s") },
                {    2,    0,    0,   1,    0,   1,   1,   0,    0,    0         N("astype") },
                {    1,    0,    0,   1,    0,   1,   2,   0,    0,    0         N("astypelate") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0x88") },
                {    1,    0,    0,   1,    0,   1,   1,   0,    0,    0         N("coerce_o") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0x8A") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0x8B") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0x8C") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0x8D") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0x8E") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0x8F") },
                {    1,    0,    0,   1,    0,   1,   1,   0,    0,    0         N("negate") },          // 0x90
                {    1,    0,    0,   1,    0,   1,   1,   0,    0,    0         N("increment") },
                {    2,    0,    0,   1,    0,   0,   0,   0,    1,    1         N("inclocal") },
                {    1,    0,    0,   1,    0,   1,   1,   0,    0,    0         N("decrement") },
                {    2,    0,    0,   1,    0,   0,   0,   0,    1,    1         N("declocal") },
                {    1,    0,    0,   0,    0,   1,   1,   0,    0,    0         N("typeof") },
                {    1,    0,    0,   0,    0,   1,   1,   0,    0,    0         N("not") },
                {    1,    0,    0,   1,    0,   1,   1,   0,    0,    0         N("bitnot") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0x98") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0x99") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0x9A") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0x9B") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0x9C") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0x9D") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0x9E") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0x9F") },
                {    1,    0,    0,   1,    0,   1,   2,   0,    0,    0         N("add") },             // 0xA0
                {    1,    0,    0,   1,    0,   1,   2,   0,    0,    0         N("subtract") },
                {    1,    0,    0,   1,    0,   1,   2,   0,    0,    0         N("multiply") },
                {    1,    0,    0,   1,    0,   1,   2,   0,    0,    0         N("divide") },
                {    1,    0,    0,   1,    0,   1,   2,   0,    0,    0         N("modulo") },
                {    1,    0,    0,   1,    0,   1,   2,   0,    0,    0         N("lshift") },
                {    1,    0,    0,   1,    0,   1,   2,   0,    0,    0         N("rshift") },
                {    1,    0,    0,   1,    0,   1,   2,   0,    0,    0         N("urshift") },
                {    1,    0,    0,   1,    0,   1,   2,   0,    0,    0         N("bitand") },
                {    1,    0,    0,   1,    0,   1,   2,   0,    0,    0         N("bitor") },
                {    1,    0,    0,   1,    0,   1,   2,   0,    0,    0         N("bitxor") },
                {    1,    0,    0,   1,    0,   1,   2,   0,    0,    0         N("equals") },
                {    1,    0,    0,   1,    0,   1,   2,   0,    0,    0         N("strictequals") },
                {    1,    0,    0,   1,    0,   1,   2,   0,    0,    0         N("lessthan") },
                {    1,    0,    0,   1,    0,   1,   2,   0,    0,    0         N("lessequals") },
                {    1,    0,    0,   1,    0,   1,   2,   0,    0,    0         N("greaterthan") },
                {    1,    0,    0,   1,    0,   1,   2,   0,    0,    0         N("greaterequals") },   // 0xB0
                {    1,    0,    0,   1,    0,   1,   2,   0,    0,    0         N("instanceof") },
                {    2,    0,    0,   1,    0,   1,   1,   0,    0,    0         N("istype") },
                {    1,    0,    0,   1,    0,   1,   2,   0,    0,    0         N("istypelate") },
                {    1,    0,    0,   1,    0,   1,   2,   0,    0,    0         N("in") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0xB5") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0xB6") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0xB7") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0xB8") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0xB9") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0xBA") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0xBB") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0xBC") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0xBD") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0xBE") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0xBF") },
                {    1,    0,    0,   1,    0,   1,   1,   0,    0,    0         N("increment_i") },     // 0xC0
                {    1,    0,    0,   1,    0,   1,   1,   0,    0,    0         N("decrement_i") },
                {    2,    0,    0,   1,    0,   0,   0,   0,    1,    1         N("inclocal_i") },
                {    2,    0,    0,   1,    0,   0,   0,   0,    1,    1         N("declocal_i") },
                {    1,    0,    0,   1,    0,   1,   1,   0,    0,    0         N("negate_i") },
                {    1,    0,    0,   1,    0,   1,   2,   0,    0,    0         N("add_i") },
                {    1,    0,    0,   1,    0,   1,   2,   0,    0,    0         N("subtract_i") },
                {    1,    0,    0,   1,    0,   1,   2,   0,    0,    0         N("multiply_i") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0xC8") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0xC9") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0xCA") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0xCB") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0xCC") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0xCD") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0xCE") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0xCF") },
                {    1,    0,    0,   0,    0,   1,   0,   0,    1,    0         N("getlocal0") },       // 0xD0
                {    1,    0,    0,   0,    0,   1,   0,   0,    1,    0         N("getlocal1") },
                {    1,    0,    0,   0,    0,   1,   0,   0,    1,    0         N("getlocal2") },
                {    1,    0,    0,   0,    0,   1,   0,   0,    1,    0         N("getlocal3") },
                {    1,    0,    0,   0,    0,   0,   1,   0,    0,    1         N("setlocal0") },
                {    1,    0,    0,   0,    0,   0,   1,   0,    0,    1         N("setlocal1") },
                {    1,    0,    0,   0,    0,   0,   1,   0,    0,    1         N("setlocal2") },
                {    1,    0,    0,   0,    0,   0,   1,   0,    0,    1         N("setlocal3") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0xD8") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0xD9") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0xDA") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0xDB") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0xDC") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0xDD") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0xDE") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0xDF") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0xE0") },            // 0xE0
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0xE1") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0xE2") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0xE3") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0xE4") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0xE5") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0xE6") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0xE7") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0xE8") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0xE9") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0xEA") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0xEB") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0xEC") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0xED") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0xEE") },            // abs_jump
                {    5,    0,    0,   1,    0,   0,   0,   0,    0,    0         N("debug") },
                {    2,    0,    0,   1,    0,   0,   0,   0,    0,    0         N("debugline") },       // 0xF0
                {    2,    0,    0,   1,    0,   0,   0,   0,    0,    0         N("debugfile") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0xF2") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0xF3") },            // timestamp
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0xF4") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0xF5") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0xF6") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0xF7") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0xF8") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0xF9") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0xFA") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0xFB") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0xFC") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0xFD") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0xFE") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0xFF") },
                {    0,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("0x100") },           // 0x100
                {    2,    0,    0,   0,    0,   1,   0,   0,    0,    0         N("pushbits") },
                {    3,    0,    0,   0,    0,   1,   0,   0,    0,    0         N("push_doublebits") },
                {    2,    0,    0,   0,    0,   2,   0,   0,    1,    0         N("get2locals") },
                {    2,    0,    0,   0,    0,   3,   0,   0,    1,    0         N("get3locals") },
                {    2,    0,    0,   0,    0,   4,   0,   0,    1,    0         N("get4locals") },
                {    2,    0,    0,   0,    0,   5,   0,   0,    1,    0         N("get5locals") },
                {    2,    0,    0,   0,    0,   0,   0,   0,    0,    1         N("storelocal") },
                {    2,    0,    0,   1,    0,   1,   0,   0,    1,    0         N("add_ll") },
                {    2,    0,    0,   1,    0,   0,   0,   0,    1,    1         N("add_set_lll") },
                {    2,    0,    0,   1,    0,   1,   0,   0,    1,    0         N("subtract_ll") },
                {    2,    0,    0,   1,    0,   1,   0,   0,    1,    0         N("multiply_ll") },
                {    2,    0,    0,   1,    0,   1,   0,   0,    1,    0         N("divide_ll") },
                {    2,    0,    0,   1,    0,   1,   0,   0,    1,    0         N("modulo_ll") },
                {    2,    0,    0,   1,    0,   1,   0,   0,    1,    0         N("bitand_ll") },
                {    2,    0,    0,   1,    0,   1,   0,   0,    1,    0         N("bitor_ll") },
                {    2,    0,    0,   1,    0,   1,   0,   0,    1,    0         N("bitxor_ll") },       // 0x110
                {    3,    0,    0,   1,    0,   1,   0,   0,    1,    0         N("add_lb") },
                {    3,    0,    0,   1,    0,   1,   0,   0,    1,    0         N("subtract_lb") },
                {    3,    0,    0,   1,    0,   1,   0,   0,    1,    0         N("multiply_lb") },
                {    3,    0,    0,   1,    0,   1,   0,   0,    1,    0         N("divide_lb") },
                {    3,    0,    0,   1,    0,   1,   0,   0,    1,    0         N("bitand_lb") },
                {    3,    0,    0,   1,    0,   1,   0,   0,    1,    0         N("bitor_lb") },
                {    3,    0,    0,   1,    0,   1,   0,   0,    1,    0         N("bitxor_lb") },
                {    3,    1,    0,   1,    0,   0,   0,   0,    1,    0         N("iflt_ll") },
                {    3,    1,    0,   1,    0,   0,   0,   0,    1,    0         N("ifnlt_ll") },
                {    3,    1,    0,   1,    0,   0,   0,   0,    1,    0         N("ifle_ll") },
                {    3,    1,    0,   1,    0,   0,   0,   0,    1,    0         N("ifnle_ll") },
                {    3,    1,    0,   1,    0,   0,   0,   0,    1,    0         N("ifgt_ll") },
                {    3,    1,    0,   1,    0,   0,   0,   0,    1,    0         N("ifngt_ll") },
                {    3,    1,    0,   1,    0,   0,   0,   0,    1,    0         N("ifge_ll") },
                {    3,    1,    0,   1,    0,   0,   0,   0,    1,    0         N("ifnge_ll") },
                {    3,    1,    0,   1,    0,   0,   0,   0,    1,    0         N("ifeq_ll") },         // 0x120
                {    3,    1,    0,   1,    0,   0,   0,   0,    1,    0         N("ifne_ll") },
                {    3,    1,    0,   0,    0,   0,   0,   0,    1,    0         N("ifstricteq_ll") },
                {    3,    1,    0,   0,    0,   0,   0,   0,    1,    0         N("ifstrictne_ll") },
                {    4,    1,    0,   1,    0,   0,   0,   0,    1,    0         N("iflt_lb") },
                {    4,    1,    0,   1,    0,   0,   0,   0,    1,    0         N("ifnlt_lb") },
                {    4,    1,    0,   1,    0,   0,   0,   0,    1,    0         N("ifle_lb") },
                {    4,    1,    0,   1,    0,   0,   0,   0,    1,    0         N("ifnle_lb") },
                {    4,    1,    0,   1,    0,   0,   0,   0,    1,    0         N("ifgt_lb") },
                {    4,    1,    0,   1,    0,   0,   0,   0,    1,    0         N("ifngt_lb") },
                {    4,    1,    0,   1,    0,   0,   0,   0,    1,    0         N("ifge_lb") },
                {    4,    1,    0,   1,    0,   0,   0,   0,    1,    0         N("ifnge_lb") },
                {    4,    1,    0,   1,    0,   0,   0,   0,    1,    0         N("ifeq_lb") },
                {    4,    1,    0,   1,    0,   0,   0,   0,    1,    0         N("ifne_lb") },
                {    4,    1,    0,   0,    0,   0,   0,   0,    1,    0         N("ifstricteq_lb") },
                {    4,    1,    0,   0,    0,   0,   0,   0,    1,    0         N("ifstrictne_lb") },
                {    1,    0,    0,   0,    0,   1,   2,   0,    0,    0         N("swap_pop") },        // 0x130
                {    3,    0,    0,   1,    0,   1,   0,   0,    0,    0         N("findpropglobal") },
                {    3,    0,    0,   1,    0,   1,   0,   0,    0,    0         N("findpropglobalstrict") },
                {    1,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("debugenter") },
                {    1,    0,    0,   0,    0,   0,   0,   0,    0,    0         N("debugexit") },
                {    1,    0,    0,   1,    0,   1,   1,   0,    0,    0         N("lix8") }, 
                {    1,    0,    0,   1,    0,   1,   1,   0,    0,    0         N("lix16") }, 
                // DO NOT ALTER OR MOVE THE NEXT LINE.
                // END
        };

#endif // AVMPLUS_WORD_CODE

}

/* [<][>][^][v][top][bottom][index][help] */