clean up DEBUG_VM
This commit is contained in:
parent
dba145a14b
commit
e526fede86
30
src/vm.c
30
src/vm.c
@ -14,7 +14,8 @@
|
|||||||
F(TR3D) F(SETN) F(SETU) F(SETM) F(SETC) F(POPS) F(DFND) F(FN1O) F(FN2O) F(CHKV) F(TR3O) \
|
F(TR3D) F(SETN) F(SETU) F(SETM) F(SETC) F(POPS) F(DFND) F(FN1O) F(FN2O) F(CHKV) F(TR3O) \
|
||||||
F(MD2R) F(VARO) F(VARM) F(VFYM) F(SETH) F(RETN) F(FLDO) F(FLDM) F(ALIM) F(RETD) F(SYSV) F(VARU) F(PRED) F(PRED1) F(PRED2) \
|
F(MD2R) F(VARO) F(VARM) F(VFYM) F(SETH) F(RETN) F(FLDO) F(FLDM) F(ALIM) F(RETD) F(SYSV) F(VARU) F(PRED) F(PRED1) F(PRED2) \
|
||||||
F(EXTO) F(EXTM) F(EXTU) F(ADDI) F(ADDU) F(FN1Ci)F(FN1Oi)F(FN2Ci)F(FN2Oi) \
|
F(EXTO) F(EXTM) F(EXTU) F(ADDI) F(ADDU) F(FN1Ci)F(FN1Oi)F(FN2Ci)F(FN2Oi) \
|
||||||
F(SETNi)F(SETUi)F(SETMi)F(SETCi)F(SETNv)F(SETUv)F(SETMv)F(SETCv)F(FAIL)
|
F(SETNi)F(SETUi)F(SETMi)F(SETCi)F(SETNv)F(SETUv)F(SETMv)F(SETCv)F(FAIL) \
|
||||||
|
F(DFND0)F(DFND1)F(DFND2)
|
||||||
|
|
||||||
u32 bL_m[BC_SIZE];
|
u32 bL_m[BC_SIZE];
|
||||||
i32 sD_m[BC_SIZE];
|
i32 sD_m[BC_SIZE];
|
||||||
@ -28,26 +29,31 @@ char* bc_repr(u32* p) {
|
|||||||
#undef F
|
#undef F
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void printBC(u32* p) {
|
void printBC(u32* p, i32 w) {
|
||||||
printf("%s", bc_repr(p));
|
char* str = bc_repr(p);
|
||||||
|
printf("%s", str);
|
||||||
u32* n = nextBC(p);
|
u32* n = nextBC(p);
|
||||||
p++;
|
p++;
|
||||||
i64 am = n-p;
|
i64 am = n-p;
|
||||||
i32 len = 0;
|
i32 len = strlen(str);
|
||||||
for (i64 i = 0; i < am; i++) printf(" %d", p[i]);
|
for (i64 i = 0; i < am; i++) printf(" %d", p[i]);
|
||||||
while(p!=n) {
|
while(p!=n) {
|
||||||
i32 c = *p++;
|
i32 c = *p++;
|
||||||
|
if (c<0) {
|
||||||
|
c = -c;
|
||||||
|
len++;
|
||||||
|
}
|
||||||
i64 pow = 10;
|
i64 pow = 10;
|
||||||
i32 log = 1;
|
i32 log = 1;
|
||||||
while (pow<=c) { pow*=10; log++; }
|
while (pow<=c) { pow*=10; log++; }
|
||||||
len+= log+1;
|
len+= log+1;
|
||||||
}
|
}
|
||||||
len = 6-len;
|
len = w-len;
|
||||||
while(len-->0) printf(" ");
|
while(len-->0) putchar(' ');
|
||||||
}
|
}
|
||||||
void printBCStream(u32* p) {
|
void printBCStream(u32* p) {
|
||||||
while(true) {
|
while(true) {
|
||||||
printBC(p); putchar(10);
|
printBC(p, 10); putchar(10);
|
||||||
if (*p == RETD || *p == RETN) return;
|
if (*p == RETD || *p == RETN) return;
|
||||||
p = nextBC(p);
|
p = nextBC(p);
|
||||||
}
|
}
|
||||||
@ -524,6 +530,7 @@ B evalBC(Block* bl, Body* b, Scope* sc) { // doesn't consume
|
|||||||
i32 stackNum = bcDepth>>1;
|
i32 stackNum = bcDepth>>1;
|
||||||
vmStack[stackNum] = -1;
|
vmStack[stackNum] = -1;
|
||||||
printf("new eval\n");
|
printf("new eval\n");
|
||||||
|
B* origStack = gStack;
|
||||||
#endif
|
#endif
|
||||||
B* objs = bl->comp->objs->a;
|
B* objs = bl->comp->objs->a;
|
||||||
u32* bc = b->bc;
|
u32* bc = b->bc;
|
||||||
@ -539,6 +546,7 @@ B evalBC(Block* bl, Body* b, Scope* sc) { // doesn't consume
|
|||||||
#define P(N) B N=POP;
|
#define P(N) B N=POP;
|
||||||
#define ADD(X) { B tr=X; *(gStack++) = tr; }
|
#define ADD(X) { B tr=X; *(gStack++) = tr; }
|
||||||
#define PEEK(X) gStack[-(X)]
|
#define PEEK(X) gStack[-(X)]
|
||||||
|
#define STACK_HEIGHT
|
||||||
#define GS_UPD
|
#define GS_UPD
|
||||||
#else
|
#else
|
||||||
B* lgStack = gStack;
|
B* lgStack = gStack;
|
||||||
@ -561,8 +569,8 @@ B evalBC(Block* bl, Body* b, Scope* sc) { // doesn't consume
|
|||||||
i32 bcPos = BCPOS(b,sbc);
|
i32 bcPos = BCPOS(b,sbc);
|
||||||
vmStack[stackNum] = bcPos;
|
vmStack[stackNum] = bcPos;
|
||||||
for(i32 i = 0; i < bcDepth; i++) printf(" ");
|
for(i32 i = 0; i < bcDepth; i++) printf(" ");
|
||||||
printBC(sbc); printf("@%d << ", bcPos);
|
printBC(sbc,20); printf("@%d in: ", bcPos);
|
||||||
for (i32 i = 0; i < b->maxStack; i++) { if(i)printf(" ⋄ "); print(gStack[i]); } putchar('\n'); fflush(stdout);
|
for (i32 i = 0; i < lgStack-origStack; i++) { if(i)printf(" ⋄ "); print(origStack[i]); } putchar('\n'); fflush(stdout);
|
||||||
bcCtr++;
|
bcCtr++;
|
||||||
for (i32 i = 0; i < sc->varAm; i++) VALIDATE(sc->vars[i]);
|
for (i32 i = 0; i < sc->varAm; i++) VALIDATE(sc->vars[i]);
|
||||||
#endif
|
#endif
|
||||||
@ -742,8 +750,8 @@ B evalBC(Block* bl, Body* b, Scope* sc) { // doesn't consume
|
|||||||
}
|
}
|
||||||
#ifdef DEBUG_VM
|
#ifdef DEBUG_VM
|
||||||
for(i32 i = 0; i < bcDepth; i++) printf(" ");
|
for(i32 i = 0; i < bcDepth; i++) printf(" ");
|
||||||
printBC(sbc); printf("@"N64d": ", BCPOS(b, sbc));
|
printBC(sbc,20); printf("@%d out: ", BCPOS(b, sbc));
|
||||||
for (i32 i = 0; i < b->maxStack; i++) { if(i)printf(" ⋄ "); print(gStack[i]); } putchar('\n'); fflush(stdout);
|
for (i32 i = 0; i < lgStack-origStack; i++) { if(i)printf(" ⋄ "); print(origStack[i]); } putchar('\n'); fflush(stdout);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
end:;
|
end:;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user