From 4e629a6ca708b0de6dcdf616e119fe02fd7572ab Mon Sep 17 00:00:00 2001 From: nilsplk Date: Thu, 26 Oct 2023 14:49:57 +0200 Subject: [PATCH] orginized projekt --- code.c | 38 +++++++++++++++++++++++++++++++ instruktion.c | 15 +++++++++++++ njvm.c | 62 ++++++++++----------------------------------------- 3 files changed, 65 insertions(+), 50 deletions(-) create mode 100644 code.c create mode 100644 instruktion.c diff --git a/code.c b/code.c new file mode 100644 index 0000000..537184b --- /dev/null +++ b/code.c @@ -0,0 +1,38 @@ +#define code + +#ifndef instruktion +#include "instruktion.c" +#endif /* ifndef instruktion */ + +unsigned int code1[] = { + (PUSHC << 24) | IMMEDIATE(3), + (PUSHC << 24) | IMMEDIATE(4), + (ADD << 24), + (PUSHC << 24) | IMMEDIATE(10), + (PUSHC << 24) | IMMEDIATE(6), + (SUB << 24), + (MUL << 24), + (WRINT << 24), + (PUSHC << 24) | IMMEDIATE(10), + (WRCHR << 24), + (HALT) +}; +unsigned int code2[] = { + (PUSHC << 24) | IMMEDIATE(-2), + (RDINT << 24), + (MUL << 24), + (PUSHC << 24) | IMMEDIATE(3), + (ADD << 24), + (WRINT << 24), + (PUSHC << 24) | IMMEDIATE('\n'), + (WRCHR << 24), + (HALT << 24) +}; +unsigned int code3[] = { + (RDCHR << 24), + (WRINT << 24), + (PUSHC << 24) | IMMEDIATE('\n'), + (WRCHR << 24), + (HALT << 24) +}; + diff --git a/instruktion.c b/instruktion.c new file mode 100644 index 0000000..f679004 --- /dev/null +++ b/instruktion.c @@ -0,0 +1,15 @@ +#define instruktion + +#define IMMEDIATE(x) ((x) & 0x00FFFFFF) + +#define HALT 0 +#define PUSHC 1 +#define ADD 2 +#define SUB 3 +#define MUL 4 +#define DIV 5 +#define MOD 6 +#define RDINT 7 +#define WRINT 8 +#define RDCHR 9 +#define WRCHR 10 diff --git a/njvm.c b/njvm.c index 4e89fb0..e964fc9 100644 --- a/njvm.c +++ b/njvm.c @@ -1,66 +1,27 @@ #include #include #include +#ifndef instruktion +#include "instruktion.c" +#endif /* ifndef instruktion */ +#ifndef code +#include "code.c" +#endif /* ifndef code */ + //Comment to disable debug #define DEBUG -#define IMMEDIATE(x) ((x) & 0x00FFFFFF) - -#define HALT 0 -#define PUSHC 1 -#define ADD 2 -#define SUB 3 -#define MUL 4 -#define DIV 5 -#define MOD 6 -#define RDINT 7 -#define WRINT 8 -#define RDCHR 9 -#define WRCHR 10 unsigned int programmSpeicher[1000]; -unsigned int code1[] = { - (PUSHC << 24) | IMMEDIATE(3), - (PUSHC << 24) | IMMEDIATE(4), - (ADD << 24), - (PUSHC << 24) | IMMEDIATE(10), - (PUSHC << 24) | IMMEDIATE(6), - (SUB << 24), - (MUL << 24), - (WRINT << 24), - (PUSHC << 24) | IMMEDIATE(10), - (WRCHR << 24), - (HALT) -}; -unsigned int code2[] = { - (PUSHC << 24) | IMMEDIATE(-2), - (RDINT << 24), - (MUL << 24), - (PUSHC << 24) | IMMEDIATE(3), - (ADD << 24), - (WRINT << 24), - (PUSHC << 24) | IMMEDIATE('\n'), - (WRCHR << 24), - (HALT << 24) -}; -unsigned int code3[] = { - (RDCHR << 24), - (WRINT << 24), - (PUSHC << 24) | IMMEDIATE('\n'), - (WRCHR << 24), - (HALT << 24) -}; -void copyToProgramm(unsigned int codeToCopy[]){ - int size = sizeof(codeToCopy)/sizeof(codeToCopy[0]); - for (int i = 0; i < size; i++) { - printf("Test\n"); +void copyToProgramm(const unsigned int codeToCopy[], int length){ + for (int i = 0; i < length; i++) { + programmSpeicher[i] = codeToCopy[i]; } - printf("%i",size); } // Stack @@ -171,7 +132,8 @@ void printStack(void){ void tests(void){ printf("Runnig debug mode\n"); - copyToProgramm(code1); + copyToProgramm(code1,sizeof(code1)/sizeof(code1[0])); + execute(); } #endif /* ifdef DEBUG */