fix file loading

This commit is contained in:
2026-07-16 18:41:52 +10:00
parent 9828ef2811
commit 14700bdf59
6 changed files with 5 additions and 5 deletions

BIN
add.o Normal file

Binary file not shown.

View File

@@ -17,7 +17,8 @@ int main() {
{INST_HLT, {}, 0, false} {INST_HLT, {}, 0, false}
}; };
memoryLoadProgram(emu->mem, program, sizeof(program)/sizeof(program[0])); RomFile* f = readProgramFromFile("../add.o");
memcpy(emu->mem + MEM_PROGRAM_START, f->instructions, sizeof(SerializedInst) * f->header.numInstructions);
startEmulator(emu); startEmulator(emu);
freeEmulator(emu); freeEmulator(emu);

View File

@@ -53,6 +53,7 @@ uint32_t memorySerializeInst(Memory* m, Instruction inst, uint32_t offset) {
void memoryLoadProgram(Memory* m, Instruction program[], size_t numInstructions) { void memoryLoadProgram(Memory* m, Instruction program[], size_t numInstructions) {
size_t offset = 0; size_t offset = 0;
for (size_t i = 0; i < numInstructions; i++) { for (size_t i = 0; i < numInstructions; i++) {
printf("%zu. %s\n", i, instructionToCStr(program[i]));
offset = memorySerializeInst(m, program[i], offset); offset = memorySerializeInst(m, program[i], offset);
} }
} }

View File

@@ -21,7 +21,7 @@ RomFile* readProgramFromFile(char* path) {
fclose(f); fclose(f);
ROMFileHeader* header = (ROMFileHeader*)buffer; ROMFileHeader* header = (ROMFileHeader*)buffer;
Instruction* instructions = calloc(header->numInstructions, sizeof(SerializedInst)); SerializedInst* instructions = calloc(header->numInstructions, sizeof(SerializedInst));
if (!instructions) { if (!instructions) {
free(buffer); free(buffer);
return NULL; return NULL;

View File

@@ -13,7 +13,7 @@ typedef struct {
typedef struct { typedef struct {
ROMFileHeader header; ROMFileHeader header;
Instruction* instructions; SerializedInst* instructions;
} RomFile; } RomFile;
// -- FUNCTIONS -- // // -- FUNCTIONS -- //

View File

@@ -1,5 +1,3 @@
dingus:
mvi a 2 mvi a 2
mvi b 2 mvi b 2