From 9f7cd4aefc34ba386d7037ef99899aa85add552f Mon Sep 17 00:00:00 2001 From: nilspolek Date: Tue, 23 Jan 2024 22:45:49 +0100 Subject: [PATCH] forgot what ive done --- CMakeLists.txt | 3 +- heap.c | 11 +++ njc/njc7 | Bin 808 -> 150240 bytes njvm.c | 14 ++-- prog.bin | Bin 404 -> 2568 bytes programs/matrix.nj | 146 +++++++++++++++++++++++++++++++++++++++ programs/newFraction.asm | 77 +++++---------------- record.c | 3 +- 8 files changed, 186 insertions(+), 68 deletions(-) create mode 100644 heap.c create mode 100644 programs/matrix.nj diff --git a/CMakeLists.txt b/CMakeLists.txt index a010125..78c3ffb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -12,7 +12,8 @@ target_include_directories(njvm PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/bigint/build # Add the library add_library(bigint STATIC ${CMAKE_SOURCE_DIR}/bigint/src/bigint.c - support.c) + support.c + heap.c) # Include directories for the bigint library target_include_directories(bigint PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/bigint/build/include) diff --git a/heap.c b/heap.c new file mode 100644 index 0000000..aee1c76 --- /dev/null +++ b/heap.c @@ -0,0 +1,11 @@ +// +// Created by Nils Polek on 23.01.24. +// +typedef struct { + int size; + int hcurrent; +}heap; + +//void* alloc(int size){ +// return {} +//} \ No newline at end of file diff --git a/njc/njc7 b/njc/njc7 index 166a58d9793164d85ed22b3650294392fd8ae656..e0076928086388b6374939b5a6f552e09320cf95 100755 GIT binary patch literal 150240 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 a1`d8;?1TJp-Vp6o`lqMsH^lXJCd32p9@BvU diff --git a/njvm.c b/njvm.c index c6e3db0..2da4f62 100644 --- a/njvm.c +++ b/njvm.c @@ -15,7 +15,7 @@ int debug = 0; // Stack struct stack stack; -#define SIZE 1000 +#define SIZE 64 //Register struct stack reg; @@ -312,18 +312,22 @@ void tests(void) { } int main(int argc, char *argv[]) { + // Initialize the HEAP + int hsize = 8 * 1024; + int hcurrent = 0; + + // Initialize the Stack int size = SIZE; int current = 0; - StackSlot s[SIZE]; stack.size = &size; stack.current = ¤t; - stack.stack = s; + stack.stack = malloc(SIZE * 1024); // Initialize the registery - int rSize = SIZE; + int rSize = 1000; int rCurrent = 0; - StackSlot r[SIZE]; + StackSlot r[1000]; reg.size = &rSize; reg.current = &rCurrent; reg.stack = r; diff --git a/prog.bin b/prog.bin index a7d322089949f1d88b86bbcf9d05c7e4a09d7610..c321e769cc3c7a2ccb80fa1cb0ef4454af88bfe8 100644 GIT binary patch literal 2568 zcmbW3%W4%t5Qe+YNxUCtlBh{e%(=uw)PO`)& zWtZR1G4l*A#B?X6o*}>PCUKMxDtkmJH;^q(oZ?CIN9#dXck0nm#i1NS<;*&U+|%kI zenW>pB_rP%i5GjiU#`ZmXt=unx%d=U_djyYg`Dph@g$DR2ji&kFk7c`qn*`7&u@&Zsize = (1 << ((sizeof(int) * 8) - 1)); record->size = record->size + size; for(int i = 0; i < size; i++) { - GET_REFS_PTR(record)[i] = malloc(8); + GET_REFS_PTR(record)[i] = NULL; } return record; } @@ -32,6 +32,7 @@ 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)); } + GET_REFS_PTR(arr)[point] = malloc(8); * (ObjRef *)GET_REFS_PTR(arr)[point]->data = value; }