/* The instruction set. */ /* --- The instruction set has been extended for Moscow ML! --- */ /* One instruction per line only. */ enum instructions { CONSTBYTE, CONSTSHORT, SWITCH, BRANCH, BRANCHIF, BRANCHIFNOT, POPBRANCHIFNOT, BRANCHIFNEQTAG, BRANCHIFEQ, BRANCHIFNEQ, BRANCHIFLT, BRANCHIFGT, BRANCHIFLE, BRANCHIFGE, BRANCHINTERVAL, C_CALL1, C_CALL2, C_CALL3, C_CALL4, C_CALL5, C_CALLN, MAKEBLOCK, MAKEBLOCK1, MAKEBLOCK2, MAKEBLOCK3, MAKEBLOCK4, TAGOF, ACCESS, ACC0, ACC1, ACC2, ACC3, ACC4, ACC5, ACC6, ACC7, PUSHACC, PUSHACC0, PUSHACC1, PUSHACC2, PUSHACC3, PUSHACC4, PUSHACC5, PUSHACC6, PUSHACC7, ENVACC, ENV1, ENV2, ENV3, ENV4, ENV5, ENV6, ENV7, PUSHENVACC, PUSHENV1, PUSHENV2, PUSHENV3, PUSHENV4, PUSHENV5, PUSHENV6, PUSHENV7, PUSH_ENV1_APPLY1, PUSH_ENV1_APPLY2, PUSH_ENV1_APPLY3, PUSH_ENV1_APPLY4, PUSH_ENV1_APPTERM1, PUSH_ENV1_APPTERM2, PUSH_ENV1_APPTERM3, PUSH_ENV1_APPTERM4, PUSHATOM, ATOM, PUSHATOM0, ATOM0, ATOM1, ATOM2, ATOM3, ATOM4, ATOM5, ATOM6, ATOM7, ATOM8, ATOM9, CONSTINT, PUSHCONSTINT, CONST0, CONST1, CONST2, CONST3, PUSHCONST0, PUSHCONST1, PUSHCONST2, PUSHCONST3, GETFIELD, GETFIELD0, GETFIELD1, GETFIELD2, GETFIELD3, GETFIELD0_0, GETFIELD0_1, GETFIELD1_0, GETFIELD1_1, SETFIELD, SETFIELD0, SETFIELD1, SETFIELD2, SETFIELD3, GETGLOBAL, PUSH_GETGLOBAL, PUSH_GETGLOBAL_APPLY1, PUSH_GETGLOBAL_APPLY2, PUSH_GETGLOBAL_APPLY3, PUSH_GETGLOBAL_APPLY4, PUSH_GETGLOBAL_APPTERM1, PUSH_GETGLOBAL_APPTERM2, PUSH_GETGLOBAL_APPTERM3, PUSH_GETGLOBAL_APPTERM4, SETGLOBAL, PUSH_RETADDR, APPLY, APPLY1, APPLY2, APPLY3, APPLY4, APPTERM, APPTERM1, APPTERM2, APPTERM3, APPTERM4, RESTART, GRAB, RETURN1, RETURN2, RETURN, CLOSURE, CLOSREC, DUMMY, UPDATE, PUSHTRAP, RAISE, POPTRAP, SWAP, PUSH, POP, ASSIGN, BOOLNOT, ADDINT, SUBINT, MULINT, DIVINT, MODINT, ANDINT, ORINT, XORINT, SHIFTLEFTINT, SHIFTRIGHTINTSIGNED, SHIFTRIGHTINTUNSIGNED, EQ, NEQ, LTINT, GTINT, LEINT, GEINT, FLOATOFINT, SMLNEGFLOAT, SMLADDFLOAT, SMLSUBFLOAT, SMLMULFLOAT, SMLDIVFLOAT, INTOFFLOAT, EQFLOAT, NEQFLOAT, LTFLOAT, GTFLOAT, LEFLOAT, GEFLOAT, STRINGLENGTH, GETSTRINGCHAR, SETSTRINGCHAR, EQSTRING, NEQSTRING, LTSTRING, GTSTRING, LESTRING, GESTRING, MAKEVECTOR, VECTLENGTH, GETVECTITEM, SETVECTITEM, SMLNEGINT, SMLSUCCINT, SMLPREDINT, SMLADDINT, SMLSUBINT, SMLMULINT, SMLDIVINT, SMLMODINT, MAKEREFVECTOR, SMLQUOTINT, SMLREMINT, CHECK_SIGNALS, STOP, EQUNSIGN, NEQUNSIGN, LTUNSIGN, GTUNSIGN, LEUNSIGN, GEUNSIGN};
/* The instruction set. */
/* --- The instruction set has been extended for Moscow ML! --- */
/* One instruction per line only. */
enum instructions {
CONSTBYTE,
CONSTSHORT,
SWITCH,
BRANCH,
BRANCHIF,
BRANCHIFNOT,
POPBRANCHIFNOT,
BRANCHIFNEQTAG,
BRANCHIFEQ,
BRANCHIFNEQ,
BRANCHIFLT,
BRANCHIFGT,
BRANCHIFLE,
BRANCHIFGE,
BRANCHINTERVAL,
C_CALL1,
C_CALL2,
C_CALL3,
C_CALL4,
C_CALL5,
C_CALLN,
MAKEBLOCK,
MAKEBLOCK1,
MAKEBLOCK2,
MAKEBLOCK3,
MAKEBLOCK4,
TAGOF,
ACCESS,
ACC0,
ACC1,
ACC2,
ACC3,
ACC4,
ACC5,
ACC6,
ACC7,
PUSHACC,
PUSHACC0,
PUSHACC1,
PUSHACC2,
PUSHACC3,
PUSHACC4,
PUSHACC5,
PUSHACC6,
PUSHACC7,
ENVACC,
ENV1,
ENV2,
ENV3,
ENV4,
ENV5,
ENV6,
ENV7,
PUSHENVACC,
PUSHENV1,
PUSHENV2,
PUSHENV3,
PUSHENV4,
PUSHENV5,
PUSHENV6,
PUSHENV7,
PUSH_ENV1_APPLY1,
PUSH_ENV1_APPLY2,
PUSH_ENV1_APPLY3,
PUSH_ENV1_APPLY4,
PUSH_ENV1_APPTERM1,
PUSH_ENV1_APPTERM2,
PUSH_ENV1_APPTERM3,
PUSH_ENV1_APPTERM4,
PUSHATOM,
ATOM,
PUSHATOM0,
ATOM0,
ATOM1,
ATOM2,
ATOM3,
ATOM4,
ATOM5,
ATOM6,
ATOM7,
ATOM8,
ATOM9,
CONSTINT,
PUSHCONSTINT,
CONST0,
CONST1,
CONST2,
CONST3,
PUSHCONST0,
PUSHCONST1,
PUSHCONST2,
PUSHCONST3,
GETFIELD,
GETFIELD0,
GETFIELD1,
GETFIELD2,
GETFIELD3,
GETFIELD0_0,
GETFIELD0_1,
GETFIELD1_0,
GETFIELD1_1,
SETFIELD,
SETFIELD0,
SETFIELD1,
SETFIELD2,
SETFIELD3,
GETGLOBAL,
PUSH_GETGLOBAL,
PUSH_GETGLOBAL_APPLY1,
PUSH_GETGLOBAL_APPLY2,
PUSH_GETGLOBAL_APPLY3,
PUSH_GETGLOBAL_APPLY4,
PUSH_GETGLOBAL_APPTERM1,
PUSH_GETGLOBAL_APPTERM2,
PUSH_GETGLOBAL_APPTERM3,
PUSH_GETGLOBAL_APPTERM4,
SETGLOBAL,
PUSH_RETADDR,
APPLY,
APPLY1,
APPLY2,
APPLY3,
APPLY4,
APPTERM,
APPTERM1,
APPTERM2,
APPTERM3,
APPTERM4,
RESTART,
GRAB,
RETURN1,
RETURN2,
RETURN,
CLOSURE,
CLOSREC,
DUMMY,
UPDATE,
PUSHTRAP,
RAISE,
POPTRAP,
SWAP,
PUSH,
POP,
ASSIGN,
BOOLNOT,
ADDINT,
SUBINT,
MULINT,
DIVINT,
MODINT,
ANDINT,
ORINT,
XORINT,
SHIFTLEFTINT,
SHIFTRIGHTINTSIGNED,
SHIFTRIGHTINTUNSIGNED,
EQ,
NEQ,
LTINT,
GTINT,
LEINT,
GEINT,
FLOATOFINT,
SMLNEGFLOAT,
SMLADDFLOAT,
SMLSUBFLOAT,
SMLMULFLOAT,
SMLDIVFLOAT,
INTOFFLOAT,
EQFLOAT,
NEQFLOAT,
LTFLOAT,
GTFLOAT,
LEFLOAT,
GEFLOAT,
STRINGLENGTH,
GETSTRINGCHAR,
SETSTRINGCHAR,
EQSTRING,
NEQSTRING,
LTSTRING,
GTSTRING,
LESTRING,
GESTRING,
MAKEVECTOR,
VECTLENGTH,
GETVECTITEM,
SETVECTITEM,
SMLNEGINT,
SMLSUCCINT,
SMLPREDINT,
SMLADDINT,
SMLSUBINT,
SMLMULINT,
SMLDIVINT,
SMLMODINT,
MAKEREFVECTOR,
SMLQUOTINT,
SMLREMINT,
CHECK_SIGNALS,
STOP,
EQUNSIGN,
NEQUNSIGN,
LTUNSIGN,
GTUNSIGN,
LEUNSIGN,
GEUNSIGN
};