orginized projekt

This commit is contained in:
nilsplk 2023-10-26 14:49:57 +02:00
parent d947afdf03
commit 4e629a6ca7
3 changed files with 65 additions and 50 deletions

38
code.c Normal file
View File

@ -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)
};

15
instruktion.c Normal file
View File

@ -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

62
njvm.c
View File

@ -1,66 +1,27 @@
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#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 */