/* 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 };