diff --git a/bigint/build/bin/testbip b/bigint/build/bin/testbip index c7bf275..e440237 100755 Binary files a/bigint/build/bin/testbip and b/bigint/build/bin/testbip differ diff --git a/bigint/build/lib/libbigint.a b/bigint/build/lib/libbigint.a index 31a62dc..dd462db 100644 Binary files a/bigint/build/lib/libbigint.a and b/bigint/build/lib/libbigint.a differ diff --git a/bigint/src/libbigint.a b/bigint/src/libbigint.a index 31a62dc..dd462db 100644 Binary files a/bigint/src/libbigint.a and b/bigint/src/libbigint.a differ diff --git a/bigint/tst/testbip b/bigint/tst/testbip index c7bf275..e440237 100755 Binary files a/bigint/tst/testbip and b/bigint/tst/testbip differ diff --git a/debugMenu.c b/debugMenu.c index 44a1602..a106abc 100644 --- a/debugMenu.c +++ b/debugMenu.c @@ -29,11 +29,14 @@ void inspect(struct stack s, int fp){ void list(void){ //todo } -void breakpoint(void){ - //todo +void breakpoint(int *bp){ + printf("BREAKPOINT: "); + char input[20]; + fgets(input,20,stdin); + *bp = atoi(input); } -void debugMenu(int fp, struct stack stack, int* debug, int point){ +void debugMenu(int fp, struct stack stack, int* debug, int point, int* bp){ char input[20]; while (true) { printf("DEBUG(%i): inspect, list, breakpoint, run, step, quit?",point); @@ -41,7 +44,7 @@ void debugMenu(int fp, struct stack stack, int* debug, int point){ printf("%s",input); if(input[0] == 'i') {inspect(stack,fp);} if(input[0] == 'l') list(); - if(input[0] == 'b') breakpoint(); + if(input[0] == 'b') breakpoint(bp); if(input[0] == 's') break; if(input[0] == 'r') {*debug = 0; break;}; if(input[0] == 'q') exit(0); diff --git a/njvm.c b/njvm.c index 96e2160..39feb49 100644 --- a/njvm.c +++ b/njvm.c @@ -28,6 +28,7 @@ void help(void) { } void execute(struct program program) { + int bp = -1; int i; char charInput; StackSlot tempSlot; @@ -35,7 +36,8 @@ void execute(struct program program) { ObjRef tempObj2; int tempInt; for (i = 0; i < *program.size; ++i) { -// if (debug == 1) debugMenu(fp, stack, &debug, i); + if (debug == 1 || bp == i) debugMenu(fp, stack, &debug, i, &bp); + if(debug == 1) printf("(%i)",i); switch (program.program[i] >> 24) { case HALT: if (debug == 1) printf("halt\n"); diff --git a/njvm.o b/njvm.o index 15b11cb..adbcd7b 100644 Binary files a/njvm.o and b/njvm.o differ