From dc5a98c4012dc514b51afce7608ba80bc142cbe4 Mon Sep 17 00:00:00 2001 From: nilspolek Date: Tue, 23 Jan 2024 20:04:06 +0100 Subject: [PATCH] added sth --- consts.c | 2 +- njvm.c | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++--- njvm.o | Bin 47976 -> 51976 bytes prog.bin | Bin 472 -> 404 bytes test.asm | 2 +- 5 files changed, 57 insertions(+), 5 deletions(-) diff --git a/consts.c b/consts.c index ce16cb4..ae8797c 100644 --- a/consts.c +++ b/consts.c @@ -1,6 +1,6 @@ #ifndef CONSTS #define CONSTS -#define VERSION 6 +#define VERSION 7 #endif /* ifndef CONSTS #define CONSTS diff --git a/njvm.c b/njvm.c index c68f026..c9b5faa 100644 --- a/njvm.c +++ b/njvm.c @@ -40,6 +40,8 @@ void execute(struct program program) { char charInput; StackSlot tempSlot; ObjRef tempObj; + ObjRef tempObj2; + int tempInt; for (i = 0; i < *program.size; ++i) { if (debug == 1) debugMenu(fp, stack, &debug, i); switch (program.program[i] >> 24) { @@ -100,7 +102,8 @@ void execute(struct program program) { case RDCHR: if (debug == 1) printf("rdchr\n"); scanf("%c", &charInput); - push(stack, stackSlotWithObjRef(getIntObj(charInput))); + bigFromInt(charInput); + push(stack, stackSlotWithObjRef(bip.res)); if (debug == 1) printf("pushed %c\n", charInput); break; case WRCHR: @@ -247,12 +250,61 @@ void execute(struct program program) { break; case GETF: if (debug == 1) printf("getf"); - push(stack, stackSlotWithObjRef(getField(pop(stack).u.objRef,SIGN_EXTEND(IMMEDIATE(program.program[i]))))); + tempObj = pop(stack).u.objRef; + if (SIGN_EXTEND(IMMEDIATE(program.program[i])) < 0 || SIGN_EXTEND(IMMEDIATE(program.program[i])) > GET_ELEMENT_COUNT(tempObj)) exit(1); + push(stack, stackSlotWithObjRef(getField(tempObj,SIGN_EXTEND(IMMEDIATE(program.program[i]))))); break; case PUTF: if (debug == 1) printf("putf"); tempObj = pop(stack).u.objRef; - setField(pop(stack).u.objRef, SIGN_EXTEND(IMMEDIATE(program.program[i])),tempObj); + tempObj2 = pop(stack).u.objRef; + if (SIGN_EXTEND(IMMEDIATE(program.program[i])) < 0 || SIGN_EXTEND(IMMEDIATE(program.program[i])) > GET_ELEMENT_COUNT(tempObj2)) exit(1); + setField(tempObj2, SIGN_EXTEND(IMMEDIATE(program.program[i])),tempObj); + break; + case NEWA: + if(debug == 1) printf("newa"); + bip.op1 = pop(stack).u.objRef; + push(stack, stackSlotWithObjRef(newRecord(bigToInt()))); + break; + case GETFA: + if(debug == 1) printf("getfa"); + bip.op1 = pop(stack).u.objRef; + tempInt = bigToInt(); + tempObj = pop(stack).u.objRef; + if (tempInt < 0 || tempInt > GET_ELEMENT_COUNT(tempObj)) exit(1); + push(stack, stackSlotWithObjRef(getField(tempObj,bigToInt()))); + break; + case PUTFA: + if (debug == 1) printf("putfa"); + tempObj = pop(stack).u.objRef; + tempObj2 = pop(stack).u.objRef; + bip.op1 = pop(stack).u.objRef; + tempInt = bigToInt(); + if (tempInt < 0 || tempInt > GET_ELEMENT_COUNT(tempObj2)) exit(1); + setField(tempObj2, tempInt,tempObj); + break; + case GETSZ: + if (debug == 1) printf("getsz"); + tempObj = pop(stack).u.objRef; + if(IS_PRIMITIVE(tempObj)) bigFromInt(-1); + else bigFromInt(GET_ELEMENT_COUNT(tempObj)); + push(stack, stackSlotWithObjRef(bip.res)); + break; + case PUSHN: + if (debug == 1) printf("pushn"); + push(stack, stackSlotWithObjRef(NULL)); + break; + case REFEQ: + if (debug == 1) printf("refeq"); + if(pop(stack).u.objRef == pop(stack).u.objRef) bigFromInt(true); + else bigFromInt(false); + push(stack, stackSlotWithObjRef(bip.res)); + break; + case REFNE: + if (debug == 1) printf("refeq"); + if(pop(stack).u.objRef != pop(stack).u.objRef) bigFromInt(true); + else bigFromInt(false); + push(stack, stackSlotWithObjRef(bip.res)); break; } } diff --git a/njvm.o b/njvm.o index 300540222201835de73a4da891e820faa0f8ecaf..2cee3155671f5212e23bf5dbfb6d5f3c9820a855 100644 GIT binary patch literal 51976 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 literal 47976 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 Z!dD{g5#&(#A4BbS9~&e?sAPGb{y(=PNnQW| diff --git a/prog.bin b/prog.bin index da3fc0235f2231c85aab7aba9426e100bf03d837..a7d322089949f1d88b86bbcf9d05c7e4a09d7610 100644 GIT binary patch literal 404 zcma)%xe5X?6h-fd;sP;23voe>I)bg8t%Ze!|KR_BgN)~8f{rkSfy3MGOKu+b>#Z;8 z33e{hB0@)+Q97{k8pf~$_o^yS95j36Luk{Dn!3E(ru*r!V<){?)IJCbXME*5%)?=V zR|YF`Pc#kI6|By>Bl+|s&57wg1P-={1NdIOx3e5ggw#hvEA_f0pE(~-Z_=~*9yU<$ RQLD@HJ2y}9Up>3Y-y54#8|nZ6 literal 472 zcmZvYy$-@K41}G6_>)Q^I`Ch?z)LVPFo47pz`}sUhIoHez6%+G)JRvKowIZG<#agq z%r!uYY>1x zlRLAOYQ$K>P^|Hwn7B_9sIF~@Vz|B_2n uUCn0F!Rr_M74W1zdy3j=k$S}gT=l>lMfDY$sXXnmx|z+T<1Wr5MsHusRv@eZ diff --git a/test.asm b/test.asm index cd43d4a..9eb4224 100644 --- a/test.asm +++ b/test.asm @@ -152,4 +152,4 @@ _main: drop 1 __0: rsf - ret \ No newline at end of file + ret