njvm/program.c
2023-10-30 11:59:56 +01:00

68 lines
1.3 KiB
C

/*
* Created by Nils on 30.10.2023.
*/
#ifndef PROGRAM
#define PROGRAM
#include <string.h>
#include "instruktion.c"
#include <stdio.h>
struct program {
int* size;
unsigned int* program;
};
void copyToProgram(unsigned int codeToCopy[], int size, struct program program){
program.program = codeToCopy;
*program.size = size;
}
void printProgram(struct program program){
printf("%i\n",*program.size);
char c[10];
for (int i = 0; i > *program.size; i++) {
switch (program.program[i] >> 24) {
case PUSHC:
strcpy(c,"pushc");
break;
case ADD:
strcpy(c,"add");
break;
case SUB:
strcpy(c,"sub");
break;
case MUL:
strcpy(c,"mul");
break;
case DIV:
strcpy(c,"div");
break;
case MOD:
strcpy(c,"mod");
break;
case RDINT:
strcpy(c,"rdint");
break;
case WRINT:
strcpy(c,"wrint");
break;
case RDCHR:
strcpy(c,"rdchr");
break;
case WRCHR:
strcpy(c,"wrchr");
break;
case HALT:
strcpy(c,"halt");
break;
default:
strcpy(c,"ERROR");
break;
}
IMMEDIATE(program.program[i])? printf("%03i:\t%s\t%i\n",i,c,IMMEDIATE(program.program[i])) : printf("%03i:\t%s\n",i,c);
printf("afslaf");
}
}
#endif /* ifndef PROGRAMM */