diff --git a/vm/run b/vm/run deleted file mode 100755 index c3f2e32..0000000 Binary files a/vm/run and /dev/null differ diff --git a/vm/vm.c b/vm/vm.c index a7d21a0..33f1f0a 100644 --- a/vm/vm.c +++ b/vm/vm.c @@ -63,7 +63,7 @@ void newstack(int sz) { Stack *s = calloc(1, sizeof(s)+sz); - R.EX = s->stack; + R.EX = s; R.TS = s->stack + sz; R.SP = s->fu + sz; R.FP = s->fu; @@ -133,14 +133,13 @@ OP(ret) { R.FP = f->fp; if(R.FP == NULL){ printf("result %ld\n", W(d)); - WORD *p = end; exit(0); } R.SP = (u8*)f; R.PC = f->lr; u8 *x = (u8*)f-IBY2WD*4; - Stack *s = x; + Stack *s = (Stack*)x; R.SP = s->SP; R.TS = s->TS; R.EX = s->EX; diff --git a/vm/vm.h b/vm/vm.h index e3dd200..2b5c35c 100644 --- a/vm/vm.h +++ b/vm/vm.h @@ -45,7 +45,7 @@ union Stack int sz; u8 *SP; u8 *TS; - u8 *EX; + Stack *EX; union{ u8 fu[1]; Frame fr[1]; @@ -59,7 +59,7 @@ struct REG u8 *FP; u8 *SP; u8 *TS; - u8 *EX; + Stack *EX; void *s, *d, *m; WORD t, dt ,mt; };