aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--vm/main.c9
-rw-r--r--vm/runtime.c4
2 files changed, 6 insertions, 7 deletions
diff --git a/vm/main.c b/vm/main.c
index 929de89..f014325 100644
--- a/vm/main.c
+++ b/vm/main.c
@@ -40,14 +40,13 @@ int main(int argc, char *argv[])
printf("[" TERM_YELLOW "INTERPRETER" TERM_RESET "]: `%s`\n", filename);
#endif
- FILE *fp = fopen(filename, "rb");
- size_t number = 0;
- inst_t *instructions = insts_read_bytecode_file(fp, &number);
+ FILE *fp = fopen(filename, "rb");
+ prog_t *program = prog_read_file(fp);
fclose(fp);
#if VERBOSE >= 1
printf("\t[" TERM_GREEN "SETUP" TERM_RESET "]: Read %lu instructions\n",
- number);
+ program->count);
#endif
size_t stack_size = 256;
@@ -61,7 +60,7 @@ int main(int argc, char *argv[])
vm_t vm = {0};
vm_load_stack(&vm, stack, stack_size);
- vm_load_program(&vm, instructions, number);
+ vm_load_program(&vm, program);
vm_load_registers(&vm, registers);
vm_load_heap(&vm, heap);
vm_load_call_stack(&vm, call_stack, call_stack_size);
diff --git a/vm/runtime.c b/vm/runtime.c
index 16c75f9..72785c5 100644
--- a/vm/runtime.c
+++ b/vm/runtime.c
@@ -281,8 +281,8 @@ err_t vm_execute_all(vm_t *vm)
size_t prev_pages = 0;
size_t prev_cptr = 0;
#endif
- while (program->data->instructions[program->ptr].opcode != OP_HALT &&
- program->ptr < program->data->count)
+ while (program->ptr < program->data->count &&
+ program->data->instructions[program->ptr].opcode != OP_HALT)
{
#if VERBOSE >= 2
fprintf(stdout, "[vm_execute_all]: Trace(Cycle %lu)\n", cycles);