|
@@ -576,101 +576,4 @@ void sCollectGarbage(Script* sc) {
|
|
sMark(sc, sc->stack + i);
|
|
sMark(sc, sc->stack + i);
|
|
}
|
|
}
|
|
aRemoveUnmarked(&sc->allocator);
|
|
aRemoveUnmarked(&sc->allocator);
|
|
-}
|
|
|
|
-
|
|
|
|
-static void sPrintInt(Script* sc, const char* msg) {
|
|
|
|
- int value = 0;
|
|
|
|
- sReadInt(sc, &value);
|
|
|
|
- printf("%s %d\n", msg, value);
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-static void sPrint2Int(Script* sc, const char* msg) {
|
|
|
|
- int a = 0;
|
|
|
|
- sReadInt(sc, &a);
|
|
|
|
- int b = 0;
|
|
|
|
- sReadInt(sc, &b);
|
|
|
|
- printf("%s %d %d\n", msg, a, b);
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-static void sPrintInt16(Script* sc, const char* msg) {
|
|
|
|
- int value = 0;
|
|
|
|
- sRead(sc, &value, 2);
|
|
|
|
- printf("%s %d\n", msg, value);
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-static void sPrintFloat(Script* sc, const char* msg) {
|
|
|
|
- float value = 0;
|
|
|
|
- sRead(sc, &value, sizeof(float));
|
|
|
|
- printf("%s %.2f\n", msg, value);
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-static void sPrintString(Script* sc, const char* msg) {
|
|
|
|
- int length = 0;
|
|
|
|
- sReadInt(sc, &length);
|
|
|
|
- char* s = (char*)(sc->code->code + sc->readIndex);
|
|
|
|
- sc->readIndex += length;
|
|
|
|
- printf("%s %d \"%s\"\n", msg, length, s);
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-void sPrintCode(Script* sc) {
|
|
|
|
- int oldRead = sc->readIndex;
|
|
|
|
- sc->readIndex = 0;
|
|
|
|
- while(sHasData(sc)) {
|
|
|
|
- printf(" %3d | ", sc->readIndex);
|
|
|
|
- switch(sReadOperation(sc)) {
|
|
|
|
- case OP_NOTHING: puts("Nothing"); break;
|
|
|
|
- case OP_PUSH_INT: sPrintInt(sc, "Push Int"); break;
|
|
|
|
- case OP_PUSH_FLOAT: sPrintFloat(sc, "Push Float"); break;
|
|
|
|
- case OP_PUSH_CONST_STRING:
|
|
|
|
- sPrintString(sc, "Push Const String");
|
|
|
|
- break;
|
|
|
|
- case OP_PUSH_NULL: puts("Push null"); break;
|
|
|
|
- case OP_PUSH_TRUE: puts("Push true"); break;
|
|
|
|
- case OP_PUSH_FALSE: puts("Push false"); break;
|
|
|
|
- case OP_PUSH_VARS: sPrint2Int(sc, "Push Vars"); break;
|
|
|
|
- case OP_POP_VARS: sPrintInt(sc, "Pop Vars"); break;
|
|
|
|
- case OP_POP: puts("Pop"); break;
|
|
|
|
- case OP_SET: puts("Set"); break;
|
|
|
|
- case OP_PRE_INCREMENT: puts("Pre Increment"); break;
|
|
|
|
- case OP_POST_INCREMENT: puts("Post Increment"); break;
|
|
|
|
- case OP_PRE_DECREMENT: puts("Pre Decrement"); break;
|
|
|
|
- case OP_POST_DECREMENT: puts("Post Decrement"); break;
|
|
|
|
- case OP_ADD: puts("Add"); break;
|
|
|
|
- case OP_SUB: puts("Sub"); break;
|
|
|
|
- case OP_MUL: puts("Mul"); break;
|
|
|
|
- case OP_DIV: puts("Div"); break;
|
|
|
|
- case OP_MOD: puts("Mod"); break;
|
|
|
|
- case OP_INVERT_SIGN: puts("Invert Sign"); break;
|
|
|
|
- case OP_LESS: puts("Less"); break;
|
|
|
|
- case OP_GREATER: puts("Greater"); break;
|
|
|
|
- case OP_EQUAL: puts("Equal"); break;
|
|
|
|
- case OP_NOT: puts("Not"); break;
|
|
|
|
- case OP_AND: puts("And"); break;
|
|
|
|
- case OP_OR: puts("Or"); break;
|
|
|
|
- case OP_BIT_NOT: puts("Bit Not"); break;
|
|
|
|
- case OP_BIT_AND: puts("Bit And"); break;
|
|
|
|
- case OP_BIT_OR: puts("Bit Or"); break;
|
|
|
|
- case OP_BIT_XOR: puts("Bit Xor"); break;
|
|
|
|
- case OP_LEFT_SHIFT: puts("Left Shift"); break;
|
|
|
|
- case OP_RIGHT_SHIFT: puts("Right Shift"); break;
|
|
|
|
- case OP_PRINT: puts("Print"); break;
|
|
|
|
- case OP_LINE: sPrintInt16(sc, "------------ Line"); break;
|
|
|
|
- case OP_GOTO: sPrintInt(sc, "GoTo"); break;
|
|
|
|
- case OP_GOSUB: sPrint2Int(sc, "GoSub"); break;
|
|
|
|
- case OP_IF_GOTO: sPrintInt(sc, "If GoTo"); break;
|
|
|
|
- case OP_SET_RETURN: puts("Set Return"); break;
|
|
|
|
- case OP_RETURN: puts("Return"); break;
|
|
|
|
- case OP_DUPLICATE: puts("Duplicate"); break;
|
|
|
|
- case OP_ALLOCATE_ARRAY: puts("Allocate Array"); break;
|
|
|
|
- case OP_ARRAY_LENGTH: puts("Array Length"); break;
|
|
|
|
- case OP_REFERENCE_FROM_VAR:
|
|
|
|
- sPrintInt(sc, "Reference From Var");
|
|
|
|
- break;
|
|
|
|
- case OP_REFERENCE_FROM_ARRAY:
|
|
|
|
- sPrintInt(sc, "Reference From Array");
|
|
|
|
- break;
|
|
|
|
- case OP_DEREFERENCE: puts("Dereference"); break;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- sc->readIndex = oldRead;
|
|
|
|
}
|
|
}
|