diff options
author | Aryadev Chavali <aryadev@aryadevchavali.com> | 2023-10-23 04:24:28 +0100 |
---|---|---|
committer | Aryadev Chavali <aryadev@aryadevchavali.com> | 2023-10-23 04:25:48 +0100 |
commit | ac57e32a0222a3f18e138f0a358d1d01921be3a0 (patch) | |
tree | b688af5abcfc48e08c7eba61f7f24623c536e931 /vm/fib.c | |
parent | aa4a3b86143250ff958ca66e77d6097aff8d42a1 (diff) | |
download | ovm-ac57e32a0222a3f18e138f0a358d1d01921be3a0.tar.gz ovm-ac57e32a0222a3f18e138f0a358d1d01921be3a0.tar.bz2 ovm-ac57e32a0222a3f18e138f0a358d1d01921be3a0.zip |
Added lib folder for general stuff, introduced as target to Makefile
Diffstat (limited to 'vm/fib.c')
-rw-r--r-- | vm/fib.c | 79 |
1 files changed, 0 insertions, 79 deletions
diff --git a/vm/fib.c b/vm/fib.c deleted file mode 100644 index 7107c3e..0000000 --- a/vm/fib.c +++ /dev/null @@ -1,79 +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-23 - * Author: Aryadev Chavali - * Description: An example virtual machine program which computes and - * prints fibonacci numbers. Note that by default the virtual machine - * just rolls overflows over, so this program will never terminate. - */ - -#include <assert.h> -#include <stdio.h> -#include <string.h> - -#include "./inst.h" -#include "./runtime.h" - -int main(void) -{ - inst_t instructions[] = { - // MOV the values 1 and 1 to REG[0] and REG[1] respectively - INST_PUSH(WORD, 1), - INST_MOV(WORD, 0), - INST_PUSH(WORD, 1), - INST_MOV(WORD, 1), - - // Print value at register 0 with newline. - INST_PUSH_REG(WORD, 0), // <-- # - INST_PRINT(WORD), - INST_PUSH(BYTE, '\n'), - INST_PRINT(CHAR), - - // Print value at register 1 with newline - INST_PUSH_REG(WORD, 1), - INST_PRINT(WORD), - INST_PUSH(BYTE, '\n'), - INST_PRINT(CHAR), - - /* Compute the next pair of fibonacci numbers */ - // REG[0] + REG[1] - INST_PUSH_REG(WORD, 0), - INST_PUSH_REG(WORD, 1), - INST_PLUS(WORD), - - // Mov REG[0] + REG[1] to REG[0] - INST_MOV(WORD, 0), - - // REG[0] + REG[1] - INST_PUSH_REG(WORD, 0), - INST_PUSH_REG(WORD, 1), - INST_PLUS(WORD), - - // Mov REG[0] + REG[1] to REG[1] - INST_MOV(WORD, 1), - - // Jump to the point # - INST_JUMP_ABS(4), - INST_HALT, - }; - - byte stack[256]; - vm_t vm = {0}; - vm_load_stack(&vm, stack, ARR_SIZE(stack)); - vm_load_program(&vm, instructions, ARR_SIZE(instructions)); - err_t err = vm_execute_all(&vm); - - if (err) - { - const char *error_str = err_as_cstr(err); - fprintf(stderr, "[ERROR]: %s\n", error_str); - fprintf(stderr, "[ERROR]: VM Trace:\n"); - vm_print_all(&vm, stderr); - return 255 - err; - } - return 0; -} |