ufff
This commit is contained in:
parent
c8b8dd820e
commit
0e7fffcfe0
67 changed files with 154 additions and 65 deletions
127
src/vm.c
127
src/vm.c
|
|
@ -192,69 +192,70 @@ void vm_run(VM *vm, Bytecode *entry) {
|
|||
vm->instr_count++; /* count each executed instruction */
|
||||
|
||||
switch (inst.op) {
|
||||
#include "vm_case_nop.inc"
|
||||
#include "vm_case_load_const.inc"
|
||||
#include "vm_case_load_local.inc"
|
||||
#include "vm_case_store_local.inc"
|
||||
#include "vm_case_add.inc"
|
||||
#include "vm_case_sub.inc"
|
||||
#include "vm_case_mul.inc"
|
||||
#include "vm_case_div.inc"
|
||||
#include "vm_case_lt.inc"
|
||||
#include "vm_case_lte.inc"
|
||||
#include "vm_case_jump.inc"
|
||||
#include "vm_case_gt.inc"
|
||||
#include "vm_case_gte.inc"
|
||||
#include "vm_case_eq.inc"
|
||||
#include "vm_case_neq.inc"
|
||||
#include "vm_case_jump_if_false.inc"
|
||||
#include "vm_case_call.inc"
|
||||
#include "vm_case_return.inc"
|
||||
#include "vm_case_print.inc"
|
||||
#include "vm_case_halt.inc"
|
||||
#include "vm_case_pop.inc"
|
||||
#include "vm_case_dup.inc"
|
||||
#include "vm_case_swap.inc"
|
||||
#include "vm_case_make_array.inc"
|
||||
#include "vm_case_index_get.inc"
|
||||
#include "vm_case_index_set.inc"
|
||||
#include "vm_case_len.inc"
|
||||
#include "vm_case_arr_push.inc"
|
||||
#include "vm_case_arr_pop.inc"
|
||||
#include "vm_case_arr_set.inc"
|
||||
#include "vm_case_arr_insert.inc"
|
||||
#include "vm_case_arr_remove.inc"
|
||||
#include "vm_case_slice.inc"
|
||||
#include "vm_case_to_number.inc"
|
||||
#include "vm_case_to_string.inc"
|
||||
#include "vm_case_split.inc"
|
||||
#include "vm_case_join.inc"
|
||||
#include "vm_case_substr.inc"
|
||||
#include "vm_case_find.inc"
|
||||
#include "vm_case_contains.inc"
|
||||
#include "vm_case_index_of.inc"
|
||||
#include "vm_case_clear.inc"
|
||||
#include "vm_case_enumerate.inc"
|
||||
#include "vm_case_zip.inc"
|
||||
#include "vm_case_min.inc"
|
||||
#include "vm_case_max.inc"
|
||||
#include "vm_case_clamp.inc"
|
||||
#include "vm_case_abs.inc"
|
||||
#include "vm_case_pow.inc"
|
||||
#include "vm_case_random_seed.inc"
|
||||
#include "vm_case_random_int.inc"
|
||||
#include "vm_case_make_map.inc"
|
||||
#include "vm_case_keys.inc"
|
||||
#include "vm_case_values.inc"
|
||||
#include "vm_case_has_key.inc"
|
||||
#include "vm_case_read_file.inc"
|
||||
#include "vm_case_write_file.inc"
|
||||
#include "vm_case_load_global.inc"
|
||||
#include "vm_case_store_global.inc"
|
||||
#include "vm_case_mod.inc"
|
||||
#include "vm_case_and.inc"
|
||||
#include "vm_case_or.inc"
|
||||
#include "vm_case_not.inc"
|
||||
/* All opcode handlers as .c includes */
|
||||
#include "vm_case_nop.c"
|
||||
#include "vm_case_load_const.c"
|
||||
#include "vm_case_load_local.c"
|
||||
#include "vm_case_store_local.c"
|
||||
#include "vm_case_add.c"
|
||||
#include "vm_case_sub.c"
|
||||
#include "vm_case_mul.c"
|
||||
#include "vm_case_div.c"
|
||||
#include "vm_case_lt.c"
|
||||
#include "vm_case_lte.c"
|
||||
#include "vm_case_jump.c"
|
||||
#include "vm_case_gt.c"
|
||||
#include "vm_case_gte.c"
|
||||
#include "vm_case_eq.c"
|
||||
#include "vm_case_neq.c"
|
||||
#include "vm_case_jump_if_false.c"
|
||||
#include "vm_case_call.c"
|
||||
#include "vm_case_return.c"
|
||||
#include "vm_case_print.c"
|
||||
#include "vm_case_halt.c"
|
||||
#include "vm_case_pop.c"
|
||||
#include "vm_case_dup.c"
|
||||
#include "vm_case_swap.c"
|
||||
#include "vm_case_make_array.c"
|
||||
#include "vm_case_index_get.c"
|
||||
#include "vm_case_index_set.c"
|
||||
#include "vm_case_len.c"
|
||||
#include "vm_case_arr_push.c"
|
||||
#include "vm_case_arr_pop.c"
|
||||
#include "vm_case_arr_set.c"
|
||||
#include "vm_case_arr_insert.c"
|
||||
#include "vm_case_arr_remove.c"
|
||||
#include "vm_case_slice.c"
|
||||
#include "vm_case_to_number.c"
|
||||
#include "vm_case_to_string.c"
|
||||
#include "vm_case_split.c"
|
||||
#include "vm_case_join.c"
|
||||
#include "vm_case_substr.c"
|
||||
#include "vm_case_find.c"
|
||||
#include "vm_case_contains.c"
|
||||
#include "vm_case_index_of.c"
|
||||
#include "vm_case_clear.c"
|
||||
#include "vm_case_enumerate.c"
|
||||
#include "vm_case_zip.c"
|
||||
#include "vm_case_min.c"
|
||||
#include "vm_case_max.c"
|
||||
#include "vm_case_clamp.c"
|
||||
#include "vm_case_abs.c"
|
||||
#include "vm_case_pow.c"
|
||||
#include "vm_case_random_seed.c"
|
||||
#include "vm_case_random_int.c"
|
||||
#include "vm_case_make_map.c"
|
||||
#include "vm_case_keys.c"
|
||||
#include "vm_case_values.c"
|
||||
#include "vm_case_has_key.c"
|
||||
#include "vm_case_read_file.c"
|
||||
#include "vm_case_write_file.c"
|
||||
#include "vm_case_load_global.c"
|
||||
#include "vm_case_store_global.c"
|
||||
#include "vm_case_mod.c"
|
||||
#include "vm_case_and.c"
|
||||
#include "vm_case_or.c"
|
||||
#include "vm_case_not.c"
|
||||
default:
|
||||
if (!opcode_is_valid(inst.op)) {
|
||||
fprintf(stderr, "Runtime error: unknown opcode %d (%s) at instruction %d\n",
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue