UNPKG

js-slang

Version:

Javascript-based implementations of Source, written in Typescript

197 lines 8.44 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getInstructionSize = exports.OPCODE_MAX = exports.OpCodes = void 0; var OpCodes; (function (OpCodes) { OpCodes[OpCodes["NOP"] = 0] = "NOP"; OpCodes[OpCodes["LDCI"] = 1] = "LDCI"; OpCodes[OpCodes["LGCI"] = 2] = "LGCI"; OpCodes[OpCodes["LDCF32"] = 3] = "LDCF32"; OpCodes[OpCodes["LGCF32"] = 4] = "LGCF32"; OpCodes[OpCodes["LDCF64"] = 5] = "LDCF64"; OpCodes[OpCodes["LGCF64"] = 6] = "LGCF64"; OpCodes[OpCodes["LDCB0"] = 7] = "LDCB0"; OpCodes[OpCodes["LDCB1"] = 8] = "LDCB1"; OpCodes[OpCodes["LGCB0"] = 9] = "LGCB0"; OpCodes[OpCodes["LGCB1"] = 10] = "LGCB1"; OpCodes[OpCodes["LGCU"] = 11] = "LGCU"; OpCodes[OpCodes["LGCN"] = 12] = "LGCN"; OpCodes[OpCodes["LGCS"] = 13] = "LGCS"; OpCodes[OpCodes["POPG"] = 14] = "POPG"; OpCodes[OpCodes["POPB"] = 15] = "POPB"; OpCodes[OpCodes["POPF"] = 16] = "POPF"; OpCodes[OpCodes["ADDG"] = 17] = "ADDG"; OpCodes[OpCodes["ADDF"] = 18] = "ADDF"; OpCodes[OpCodes["SUBG"] = 19] = "SUBG"; OpCodes[OpCodes["SUBF"] = 20] = "SUBF"; OpCodes[OpCodes["MULG"] = 21] = "MULG"; OpCodes[OpCodes["MULF"] = 22] = "MULF"; OpCodes[OpCodes["DIVG"] = 23] = "DIVG"; OpCodes[OpCodes["DIVF"] = 24] = "DIVF"; OpCodes[OpCodes["MODG"] = 25] = "MODG"; OpCodes[OpCodes["MODF"] = 26] = "MODF"; OpCodes[OpCodes["NOTG"] = 27] = "NOTG"; OpCodes[OpCodes["NOTB"] = 28] = "NOTB"; OpCodes[OpCodes["LTG"] = 29] = "LTG"; OpCodes[OpCodes["LTF"] = 30] = "LTF"; OpCodes[OpCodes["GTG"] = 31] = "GTG"; OpCodes[OpCodes["GTF"] = 32] = "GTF"; OpCodes[OpCodes["LEG"] = 33] = "LEG"; OpCodes[OpCodes["LEF"] = 34] = "LEF"; OpCodes[OpCodes["GEG"] = 35] = "GEG"; OpCodes[OpCodes["GEF"] = 36] = "GEF"; OpCodes[OpCodes["EQG"] = 37] = "EQG"; OpCodes[OpCodes["EQF"] = 38] = "EQF"; OpCodes[OpCodes["EQB"] = 39] = "EQB"; OpCodes[OpCodes["NEWC"] = 40] = "NEWC"; OpCodes[OpCodes["NEWA"] = 41] = "NEWA"; OpCodes[OpCodes["LDLG"] = 42] = "LDLG"; OpCodes[OpCodes["LDLF"] = 43] = "LDLF"; OpCodes[OpCodes["LDLB"] = 44] = "LDLB"; OpCodes[OpCodes["STLG"] = 45] = "STLG"; OpCodes[OpCodes["STLB"] = 46] = "STLB"; OpCodes[OpCodes["STLF"] = 47] = "STLF"; OpCodes[OpCodes["LDPG"] = 48] = "LDPG"; OpCodes[OpCodes["LDPF"] = 49] = "LDPF"; OpCodes[OpCodes["LDPB"] = 50] = "LDPB"; OpCodes[OpCodes["STPG"] = 51] = "STPG"; OpCodes[OpCodes["STPB"] = 52] = "STPB"; OpCodes[OpCodes["STPF"] = 53] = "STPF"; OpCodes[OpCodes["LDAG"] = 54] = "LDAG"; OpCodes[OpCodes["LDAB"] = 55] = "LDAB"; OpCodes[OpCodes["LDAF"] = 56] = "LDAF"; OpCodes[OpCodes["STAG"] = 57] = "STAG"; OpCodes[OpCodes["STAB"] = 58] = "STAB"; OpCodes[OpCodes["STAF"] = 59] = "STAF"; OpCodes[OpCodes["BRT"] = 60] = "BRT"; OpCodes[OpCodes["BRF"] = 61] = "BRF"; OpCodes[OpCodes["BR"] = 62] = "BR"; OpCodes[OpCodes["JMP"] = 63] = "JMP"; OpCodes[OpCodes["CALL"] = 64] = "CALL"; OpCodes[OpCodes["CALLT"] = 65] = "CALLT"; OpCodes[OpCodes["CALLP"] = 66] = "CALLP"; OpCodes[OpCodes["CALLTP"] = 67] = "CALLTP"; OpCodes[OpCodes["CALLV"] = 68] = "CALLV"; OpCodes[OpCodes["CALLTV"] = 69] = "CALLTV"; OpCodes[OpCodes["RETG"] = 70] = "RETG"; OpCodes[OpCodes["RETF"] = 71] = "RETF"; OpCodes[OpCodes["RETB"] = 72] = "RETB"; OpCodes[OpCodes["RETU"] = 73] = "RETU"; OpCodes[OpCodes["RETN"] = 74] = "RETN"; OpCodes[OpCodes["DUP"] = 75] = "DUP"; OpCodes[OpCodes["NEWENV"] = 76] = "NEWENV"; OpCodes[OpCodes["POPENV"] = 77] = "POPENV"; OpCodes[OpCodes["NEWCP"] = 78] = "NEWCP"; OpCodes[OpCodes["NEWCV"] = 79] = "NEWCV"; OpCodes[OpCodes["NEGG"] = 80] = "NEGG"; OpCodes[OpCodes["NEGF"] = 81] = "NEGF"; OpCodes[OpCodes["NEQG"] = 82] = "NEQG"; OpCodes[OpCodes["NEQF"] = 83] = "NEQF"; OpCodes[OpCodes["NEQB"] = 84] = "NEQB"; // custom opcodes OpCodes[OpCodes["ARRAY_LEN"] = 1000] = "ARRAY_LEN"; OpCodes[OpCodes["DISPLAY"] = 1001] = "DISPLAY"; OpCodes[OpCodes["DRAW_DATA"] = 1002] = "DRAW_DATA"; OpCodes[OpCodes["ERROR"] = 1003] = "ERROR"; OpCodes[OpCodes["IS_ARRAY"] = 1004] = "IS_ARRAY"; OpCodes[OpCodes["IS_BOOL"] = 1005] = "IS_BOOL"; OpCodes[OpCodes["IS_FUNC"] = 1006] = "IS_FUNC"; OpCodes[OpCodes["IS_NULL"] = 1007] = "IS_NULL"; OpCodes[OpCodes["IS_NUMBER"] = 1008] = "IS_NUMBER"; OpCodes[OpCodes["IS_STRING"] = 1009] = "IS_STRING"; OpCodes[OpCodes["IS_UNDEFINED"] = 1010] = "IS_UNDEFINED"; OpCodes[OpCodes["MATH_ABS"] = 1011] = "MATH_ABS"; OpCodes[OpCodes["MATH_ACOS"] = 1012] = "MATH_ACOS"; OpCodes[OpCodes["MATH_ACOSH"] = 1013] = "MATH_ACOSH"; OpCodes[OpCodes["MATH_ASIN"] = 1014] = "MATH_ASIN"; OpCodes[OpCodes["MATH_ASINH"] = 1015] = "MATH_ASINH"; OpCodes[OpCodes["MATH_ATAN"] = 1016] = "MATH_ATAN"; OpCodes[OpCodes["MATH_ATAN2"] = 1017] = "MATH_ATAN2"; OpCodes[OpCodes["MATH_ATANH"] = 1018] = "MATH_ATANH"; OpCodes[OpCodes["MATH_CBRT"] = 1019] = "MATH_CBRT"; OpCodes[OpCodes["MATH_CEIL"] = 1020] = "MATH_CEIL"; OpCodes[OpCodes["MATH_CLZ32"] = 1021] = "MATH_CLZ32"; OpCodes[OpCodes["MATH_COS"] = 1022] = "MATH_COS"; OpCodes[OpCodes["MATH_COSH"] = 1023] = "MATH_COSH"; OpCodes[OpCodes["MATH_EXP"] = 1024] = "MATH_EXP"; OpCodes[OpCodes["MATH_EXPM1"] = 1025] = "MATH_EXPM1"; OpCodes[OpCodes["MATH_FLOOR"] = 1026] = "MATH_FLOOR"; OpCodes[OpCodes["MATH_FROUND"] = 1027] = "MATH_FROUND"; OpCodes[OpCodes["MATH_HYPOT"] = 1028] = "MATH_HYPOT"; OpCodes[OpCodes["MATH_IMUL"] = 1029] = "MATH_IMUL"; OpCodes[OpCodes["MATH_LOG"] = 1030] = "MATH_LOG"; OpCodes[OpCodes["MATH_LOG1P"] = 1031] = "MATH_LOG1P"; OpCodes[OpCodes["MATH_LOG2"] = 1032] = "MATH_LOG2"; OpCodes[OpCodes["MATH_LOG10"] = 1033] = "MATH_LOG10"; OpCodes[OpCodes["MATH_MAX"] = 1034] = "MATH_MAX"; OpCodes[OpCodes["MATH_MIN"] = 1035] = "MATH_MIN"; OpCodes[OpCodes["MATH_POW"] = 1036] = "MATH_POW"; OpCodes[OpCodes["MATH_RANDOM"] = 1037] = "MATH_RANDOM"; OpCodes[OpCodes["MATH_ROUND"] = 1038] = "MATH_ROUND"; OpCodes[OpCodes["MATH_SIGN"] = 1039] = "MATH_SIGN"; OpCodes[OpCodes["MATH_SIN"] = 1040] = "MATH_SIN"; OpCodes[OpCodes["MATH_SINH"] = 1041] = "MATH_SINH"; OpCodes[OpCodes["MATH_SQRT"] = 1042] = "MATH_SQRT"; OpCodes[OpCodes["MATH_TAN"] = 1043] = "MATH_TAN"; OpCodes[OpCodes["MATH_TANH"] = 1044] = "MATH_TANH"; OpCodes[OpCodes["MATH_TRUNC"] = 1045] = "MATH_TRUNC"; OpCodes[OpCodes["PARSE_INT"] = 1046] = "PARSE_INT"; OpCodes[OpCodes["RUNTIME"] = 1047] = "RUNTIME"; OpCodes[OpCodes["STREAM"] = 1048] = "STREAM"; OpCodes[OpCodes["STRINGIFY"] = 1049] = "STRINGIFY"; OpCodes[OpCodes["PROMPT"] = 1050] = "PROMPT"; OpCodes[OpCodes["DISPLAY_LIST"] = 1051] = "DISPLAY_LIST"; OpCodes[OpCodes["CHAR_AT"] = 1052] = "CHAR_AT"; OpCodes[OpCodes["ARITY"] = 1053] = "ARITY"; // Source 3 Concurrenct Opcodes OpCodes[OpCodes["EXECUTE"] = 2000] = "EXECUTE"; OpCodes[OpCodes["TEST_AND_SET"] = 2001] = "TEST_AND_SET"; OpCodes[OpCodes["CLEAR"] = 2002] = "CLEAR"; })(OpCodes = exports.OpCodes || (exports.OpCodes = {})); exports.OPCODE_MAX = 84; function getInstructionSize(opcode) { switch (opcode) { case OpCodes.LDLG: case OpCodes.LDLF: case OpCodes.LDLB: case OpCodes.STLG: case OpCodes.STLF: case OpCodes.STLB: case OpCodes.CALL: case OpCodes.CALLT: case OpCodes.NEWENV: case OpCodes.NEWCP: case OpCodes.NEWCV: return 2; case OpCodes.LDPG: case OpCodes.LDPF: case OpCodes.LDPB: case OpCodes.STPG: case OpCodes.STPF: case OpCodes.STPB: case OpCodes.CALLP: case OpCodes.CALLTP: case OpCodes.CALLV: case OpCodes.CALLTV: return 3; case OpCodes.LDCI: case OpCodes.LGCI: case OpCodes.LDCF32: case OpCodes.LGCF32: case OpCodes.LGCS: case OpCodes.NEWC: case OpCodes.BRF: case OpCodes.BRT: case OpCodes.BR: case OpCodes.JMP: return 5; case OpCodes.LDCF64: case OpCodes.LGCF64: return 9; default: return 1; } } exports.getInstructionSize = getInstructionSize; exports.default = OpCodes; //# sourceMappingURL=opcodes.js.map