From 49e4911238098e1e8e9e68f6c5c4d94cb49ec9b2 Mon Sep 17 00:00:00 2001 From: nilspolek Date: Sat, 27 Jan 2024 21:17:06 +0100 Subject: [PATCH] added tests --- .DS_Store | Bin 0 -> 6148 bytes GC.c | 2 +- bigint/build/bin/testbip | Bin 72952 -> 72952 bytes bigint/build/lib/libbigint.a | Bin 27544 -> 27544 bytes bigint/src/libbigint.a | Bin 27544 -> 27544 bytes bigint/tst/testbip | Bin 72952 -> 72952 bytes njvm.c | 10 +- njvm.o | Bin 51344 -> 51104 bytes programs/matrix.asm | 778 +++++++++++++++++++++++++++++++++++ 9 files changed, 784 insertions(+), 6 deletions(-) create mode 100644 .DS_Store create mode 100644 programs/matrix.asm diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..a2eb533abf551d042629249e6fe5fb378b3b5ee0 GIT binary patch literal 6148 zcmeH~u?oUK42Bc!Ah>jNyu}Cb4Gz&K=nFU~E>c0O^F6wMazU^xC+1b{XuyJ79K1T}(S!u1*@b}wNMJ-@TJzTK|1JE}{6A`8N&+PC zX9Tp_belC^D(=>|*R%RAshJDdxb)EogM(r-R7 delta 137 zcmV;40CxZQxdiyR1h8lX5D9&JDM4m8!@Sl8yLwiKnS*!)mv{sLNCE?2x55Mg-Ub2# zUzef_0saC5U$>$R0TK=%aYyp-%)EogM<}EqZ diff --git a/bigint/build/lib/libbigint.a b/bigint/build/lib/libbigint.a index cf0b02bdc4f127fac030a49edecfb93971ac07ea..9581749e205dd08eb828586835c6a9038942f9ff 100644 GIT binary patch delta 30 lcmbPnopHu>#tHIF=Ejo)86`GaiZKG26BQ*kXEN$%0RWm82<89) delta 30 mcmbPnopHu>#tHIFhGvrk86`GaiZL=7nod-d*qq6zp9KJ!s|eo! diff --git a/bigint/src/libbigint.a b/bigint/src/libbigint.a index cf0b02bdc4f127fac030a49edecfb93971ac07ea..9581749e205dd08eb828586835c6a9038942f9ff 100644 GIT binary patch delta 30 lcmbPnopHu>#tHIF=Ejo)86`GaiZKG26BQ*kXEN$%0RWm82<89) delta 30 mcmbPnopHu>#tHIFhGvrk86`GaiZL=7nod-d*qq6zp9KJ!s|eo! diff --git a/bigint/tst/testbip b/bigint/tst/testbip index a9e294d220322e45d0c69d4d54ba2088296b4530..66b76a3504979342bede091279c7645d564dc1fe 100755 GIT binary patch delta 137 zcmV;40CxZQxdiyR1h8lX5F~R{*@0?2*q^lf^8HDT+Jkrmmv{sLNCHA(x55Mg-Ub3f zVV9x{0saC)VYi|T0TK=%Zrh#-whJDdxb)EogM(r-R7 delta 137 zcmV;40CxZQxdiyR1h8lX5D9&JDM4m8!@Sl8yLwiKnS*!)mv{sLNCE?2x55Mg-Ub2# zUzef_0saC5U$>$R0TK=%aYyp-%)EogM<}EqZ diff --git a/njvm.c b/njvm.c index 55f109d..35e25d7 100644 --- a/njvm.c +++ b/njvm.c @@ -35,7 +35,7 @@ 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) debugMenu(fp, stack, &debug, i); switch (program.program[i] >> 24) { case HALT: if (debug == 1) printf("halt\n"); @@ -314,17 +314,17 @@ int main(int argc, char *argv[]) { stack.stack = malloc(SIZE * 1024); // Initialize the registery - int rSize = 1000; + int rSize = 100000; int rCurrent = 0; - StackSlot r[1000]; + StackSlot r[100000]; reg.size = &rSize; reg.current = &rCurrent; reg.stack = r; // Initialize ProgrammSpeicher - int psize = 1000; + int psize = 100000; int saveProgram = 0; - unsigned int p[1000]; + unsigned int p[100000]; program.size = &psize; program.program = p; program.saveProgram = &saveProgram; diff --git a/njvm.o b/njvm.o index 0acc7dadef740458fa0ed23bf0d31b3c58212208..8a1c7b104d6b053544e514ba66cbba60227f5efe 100644 GIT binary patch delta 15595 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¬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