#ifndef CODEREADER #define CODEREADER #include "consts.c" #include #include #include "program.c" unsigned int fromFile(char *path, struct program program) { unsigned int countInstructions; unsigned int staticVars; FILE *fptr; fptr = fopen(path, "r+b"); if (fptr == NULL) { printf("Error: cannot open code file %s\n", path); exit(EXIT_FAILURE); } unsigned int buffer[4]; fread(buffer, 4, 4, fptr); // Check file type if (buffer[0] != 0x46424A4E) { printf("Error: wrong file type"); exit(EXIT_FAILURE); } if (buffer[1] != VERSION) { printf("Error: wrong version"); exit(EXIT_FAILURE); } countInstructions = buffer[2]; staticVars = buffer[3]; unsigned int instBuffer[countInstructions]; fread(instBuffer, 4, countInstructions, fptr); copyToProgram(instBuffer, countInstructions, program); return staticVars; } #endif /* ifdef CODEREADER */