diff options
author | Aryadev Chavali <aryadev@aryadevchavali.com> | 2023-10-15 21:04:44 +0100 |
---|---|---|
committer | Aryadev Chavali <aryadev@aryadevchavali.com> | 2023-10-15 21:05:09 +0100 |
commit | 3f8544485affaf2e701992cdfaedac13e86e050a (patch) | |
tree | d50b55d178f382f0a8c21000e07f9818f3c017e5 | |
parent | 56c545e7c9b9074a5c5e621b57c87e9e6556978b (diff) | |
download | ovm-3f8544485affaf2e701992cdfaedac13e86e050a.tar.gz ovm-3f8544485affaf2e701992cdfaedac13e86e050a.tar.bz2 ovm-3f8544485affaf2e701992cdfaedac13e86e050a.zip |
Move push routines outside of vm_execute
-rw-r--r-- | src/main.c | 14 |
1 files changed, 9 insertions, 5 deletions
@@ -147,6 +147,14 @@ f64 vm_pop_float(vm_t *vm) return f; } +typedef void (*push_f)(vm_t *, data_t); + +static const push_f PUSH_ROUTINES[] = { + [OP_PUSH_BYTE] = vm_push_byte, + [OP_PUSH_WORD] = vm_push_word, + [OP_PUSH_FLOAT] = vm_push_float, +}; + void vm_execute(vm_t *vm) { struct Program *prog = &vm->program; @@ -158,11 +166,7 @@ void vm_execute(vm_t *vm) // Check if opcode is PUSH_LIKE if (OPCODE_IS_PUSH(instruction.opcode)) { - typedef void (*push_f)(vm_t *, data_t); - const push_f routines[] = {[OP_PUSH_BYTE] = vm_push_byte, - [OP_PUSH_WORD] = vm_push_word, - [OP_PUSH_FLOAT] = vm_push_float}; - routines[instruction.opcode](vm, instruction.operand); + PUSH_ROUTINES[instruction.opcode](vm, instruction.operand); prog->ptr++; } else |