From 1c0d85b5c9dc640c0134fc92de83019147e67c32 Mon Sep 17 00:00:00 2001 From: nilspolek Date: Tue, 23 Jan 2024 21:10:06 +0100 Subject: [PATCH] added sth --- debugMenu.c | 4 ++-- njvm.c | 5 ----- njvm.o | Bin 51976 -> 51784 bytes record.c | 16 +++++++++++++--- 4 files changed, 15 insertions(+), 10 deletions(-) diff --git a/debugMenu.c b/debugMenu.c index e8ef35c..6f15234 100644 --- a/debugMenu.c +++ b/debugMenu.c @@ -27,10 +27,10 @@ void inspect(struct stack s, int fp){ } } } -void list(){ +void list(void){ //todo } -void breakpoint(){ +void breakpoint(void){ //todo } diff --git a/njvm.c b/njvm.c index c9b5faa..04168b7 100644 --- a/njvm.c +++ b/njvm.c @@ -251,14 +251,12 @@ void execute(struct program program) { case GETF: if (debug == 1) printf("getf"); 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; 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: @@ -271,7 +269,6 @@ void execute(struct program program) { 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: @@ -280,7 +277,6 @@ void execute(struct program program) { 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: @@ -313,7 +309,6 @@ void execute(struct program program) { } void tests(void) { - } int main(int argc, char *argv[]) { diff --git a/njvm.o b/njvm.o index 2cee3155671f5212e23bf5dbfb6d5f3c9820a855..7e95bbc808234f336dbc7acd24a8e1edce8b4742 100644 GIT binary patch literal 51784 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 literal 51976 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 diff --git a/record.c b/record.c index 4691353..27b0e30 100644 --- a/record.c +++ b/record.c @@ -9,20 +9,30 @@ ObjRef newRecord(int size){ ObjRef record; unsigned int objSize; objSize = sizeof(*record) + (size * sizeof(void *)); - if((record = malloc(objSize))== NULL){ + if((record = malloc(objSize)) == NULL){ perror("malloc"); } - record->size = MSB & size; + record->size = (1 << ((sizeof(int) * 8) - 1)); + record->size = record->size + size; for(int i = 0; i < size; i++) { GET_REFS_PTR(record)[i] = malloc(8); } return record; } +int getSize(ObjRef arr){ + return GET_ELEMENT_COUNT(arr); +} ObjRef getField(ObjRef arr, int point){ + if(0 > point || point > getSize(arr)){ + printf("Index %i out of bounds for length %i\n",point, getSize(arr)); + } return *(ObjRef *)GET_REFS_PTR(arr)[point]->data; } void setField(ObjRef arr, int point, ObjRef value){ + if(0 > point || point > getSize(arr)){ + printf("Index %i out of bounds for length %i\n",point, getSize(arr)); + } * (ObjRef *)GET_REFS_PTR(arr)[point]->data = value; } -#endif \ No newline at end of file +#endif