Add header generation to assembler
This commit is contained in:
@@ -211,6 +211,32 @@ void serializeProgramToFile(Program* program, const char* outputFileName) {
|
|||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Write magic header
|
||||||
|
size_t written = fwrite("mlc\0", 4, 1, fp);
|
||||||
|
if (written != 1) {
|
||||||
|
fprintf(stderr, "failed to write magic header into file %s\n", outputFileName);
|
||||||
|
fclose(fp);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Write program version
|
||||||
|
uint8_t version = 1;
|
||||||
|
written = fwrite(&version, sizeof(uint8_t), 1, fp);
|
||||||
|
if (written != 1) {
|
||||||
|
fprintf(stderr, "failed to write version header into file %s\n", outputFileName);
|
||||||
|
fclose(fp);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Write instruction count
|
||||||
|
uint32_t instCount = program->len;
|
||||||
|
written = fwrite(&instCount, sizeof(uint32_t), 1, fp);
|
||||||
|
if (written != 1) {
|
||||||
|
fprintf(stderr, "failed to write instruction count header into file %s\n", outputFileName);
|
||||||
|
fclose(fp);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
for (size_t i = 0; i < program->len; i++) {
|
for (size_t i = 0; i < program->len; i++) {
|
||||||
Instruction* inst = &program->at[i];
|
Instruction* inst = &program->at[i];
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user