215 lines · 2.7 KB · C
RawDownload
/* 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};