diff options
author | Aryadev Chavali <aryadev@aryadevchavali.com> | 2023-10-23 03:58:34 +0100 |
---|---|---|
committer | Aryadev Chavali <aryadev@aryadevchavali.com> | 2023-10-23 03:58:34 +0100 |
commit | b44a61be41e44b415b1293fcbc1f1e8c4ce3373d (patch) | |
tree | 218cdb4901d23089ab0b54b4ff3097202c442acd /src/main.c | |
parent | 587f31a63b26fe3789acd0ba129474a2be200d37 (diff) | |
download | ovm-b44a61be41e44b415b1293fcbc1f1e8c4ce3373d.tar.gz ovm-b44a61be41e44b415b1293fcbc1f1e8c4ce3373d.tar.bz2 ovm-b44a61be41e44b415b1293fcbc1f1e8c4ce3373d.zip |
src->vm, Makefile is now a bit more abstracted and pretty colours
Changed folder names for sake of clarity (will be introducing a new
build target soon), and Makefile can now easily support more targets.
Diffstat (limited to 'src/main.c')
-rw-r--r-- | src/main.c | 62 |
1 files changed, 0 insertions, 62 deletions
diff --git a/src/main.c b/src/main.c deleted file mode 100644 index 005b61e..0000000 --- a/src/main.c +++ /dev/null @@ -1,62 +0,0 @@ -/* Copyright (C) 2023 Aryadev Chavali - - * You may distribute and modify this code under the terms of the - * GPLv2 license. You should have received a copy of the GPLv2 - * license with this file. If not, please write to: - * aryadev@aryadevchavali.com. - - * Created: 2023-10-15 - * Author: Aryadev Chavali - * Description: Entrypoint to program - */ - -#include <assert.h> -#include <stdio.h> -#include <string.h> - -#include "./inst.h" -#include "./runtime.h" - -int interpret_bytecode(const char *filepath) -{ - FILE *fp = fopen(filepath, "rb"); - size_t number = 0; - inst_t *instructions = insts_read_bytecode_file(fp, &number); - fclose(fp); - - byte stack[256]; - vm_t vm = {0}; - vm_load_stack(&vm, stack, ARR_SIZE(stack)); - vm_load_program(&vm, instructions, number); - err_t err = vm_execute_all(&vm); - - int ret = 0; - if (err) - { - const char *error_str = err_as_cstr(err); - fprintf(stderr, "[ERROR]: %s\n", error_str); - vm_print_all(&vm, stderr); - ret = 255 - err; - } - free(instructions); - return ret; -} - -int assemble_instructions(inst_t *instructions, size_t number, - const char *filepath) -{ - FILE *fp = fopen(filepath, "wb"); - insts_write_bytecode_file(instructions, number, fp); - fclose(fp); - return 0; -} - -int main(int argc, char *argv[]) -{ - const char *filename = "out.bin"; - if (argc >= 2) - filename = argv[1]; - inst_t instructions[] = {INST_HALT}; - assemble_instructions(instructions, ARR_SIZE(instructions), filename); - return interpret_bytecode(filename); -} |