|
|
|
@@ -18,100 +18,101 @@
|
|
|
|
|
#include "interpreter.h"
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
|
save_op_data (OPCODE opdata)
|
|
|
|
|
save_op_data (int pos, OPCODE opdata)
|
|
|
|
|
{
|
|
|
|
|
__program[__int_data.pos++] = opdata;
|
|
|
|
|
__program[pos] = opdata;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void opfunc_loop_init_num (OPCODE opdata) { unreachable (); }
|
|
|
|
|
void opfunc_loop_precond_begin_num (OPCODE opdata) { unreachable (); }
|
|
|
|
|
void opfunc_loop_precond_end_num (OPCODE opdata) { unreachable (); }
|
|
|
|
|
void opfunc_loop_postcond (OPCODE opdata) { unreachable (); }
|
|
|
|
|
void opfunc_call_2 (OPCODE opdata) { unreachable (); }
|
|
|
|
|
void opfunc_call_n (OPCODE opdata) { unreachable (); }
|
|
|
|
|
void opfunc_func_decl_1 (OPCODE opdata) { unreachable (); }
|
|
|
|
|
void opfunc_func_decl_2 (OPCODE opdata) { unreachable (); }
|
|
|
|
|
void opfunc_func_decl_n (OPCODE opdata) { unreachable (); }
|
|
|
|
|
void opfunc_varg_1 (OPCODE opdata) { unreachable (); }
|
|
|
|
|
void opfunc_varg_1_end (OPCODE opdata) { unreachable (); }
|
|
|
|
|
void opfunc_varg_2 (OPCODE opdata) { unreachable (); }
|
|
|
|
|
void opfunc_varg_2_end (OPCODE opdata) { unreachable (); }
|
|
|
|
|
void opfunc_varg_3 (OPCODE opdata) { unreachable (); }
|
|
|
|
|
void opfunc_varg_3_end (OPCODE opdata) { unreachable (); }
|
|
|
|
|
void opfunc_retval (OPCODE opdata) { unreachable (); }
|
|
|
|
|
void opfunc_assignment (OPCODE opdata) { unreachable (); }
|
|
|
|
|
void opfunc_assignment_multiplication (OPCODE opdata) { unreachable (); }
|
|
|
|
|
void opfunc_assignment_devision (OPCODE opdata) { unreachable (); }
|
|
|
|
|
void opfunc_assignment_remainder (OPCODE opdata) { unreachable (); }
|
|
|
|
|
void opfunc_assignment_addition (OPCODE opdata) { unreachable (); }
|
|
|
|
|
void opfunc_assignment_substruction (OPCODE opdata) { unreachable (); }
|
|
|
|
|
void opfunc_assignment_shift_left (OPCODE opdata) { unreachable (); }
|
|
|
|
|
void opfunc_assignment_shift_right (OPCODE opdata) { unreachable (); }
|
|
|
|
|
void opfunc_assignment_shift_uright (OPCODE opdata) { unreachable (); }
|
|
|
|
|
void opfunc_assignment_b_and (OPCODE opdata) { unreachable (); }
|
|
|
|
|
void opfunc_assignment_b_xor (OPCODE opdata) { unreachable (); }
|
|
|
|
|
void opfunc_assignment_b_or (OPCODE opdata) { unreachable (); }
|
|
|
|
|
void opfunc_logical_and (OPCODE opdata) { unreachable (); }
|
|
|
|
|
void opfunc_logical_or (OPCODE opdata) { unreachable (); }
|
|
|
|
|
void opfunc_b_and (OPCODE opdata) { unreachable (); }
|
|
|
|
|
void opfunc_b_or (OPCODE opdata) { unreachable (); }
|
|
|
|
|
void opfunc_b_xor (OPCODE opdata) { unreachable (); }
|
|
|
|
|
void opfunc_b_shift_left (OPCODE opdata) { unreachable (); }
|
|
|
|
|
void opfunc_b_shift_right (OPCODE opdata) { unreachable (); }
|
|
|
|
|
void opfunc_b_shift_uright (OPCODE opdata) { unreachable (); }
|
|
|
|
|
void opfunc_addition (OPCODE opdata) { unreachable (); }
|
|
|
|
|
void opfunc_substraction (OPCODE opdata) { unreachable (); }
|
|
|
|
|
void opfunc_division (OPCODE opdata) { unreachable (); }
|
|
|
|
|
void opfunc_multiplication (OPCODE opdata) { unreachable (); }
|
|
|
|
|
void opfunc_remainder (OPCODE opdata) { unreachable (); }
|
|
|
|
|
void opfunc_jmp_up (OPCODE opdata) { unreachable (); }
|
|
|
|
|
void opfunc_jmp_down (OPCODE opdata) { unreachable (); }
|
|
|
|
|
void opfunc_is_true_jmp (OPCODE opdata) { unreachable (); }
|
|
|
|
|
void opfunc_is_false_jmp (OPCODE opdata) { unreachable (); }
|
|
|
|
|
void opfunc_is_less_than (OPCODE opdata) { unreachable (); }
|
|
|
|
|
void opfunc_is_less_or_equal (OPCODE opdata) { unreachable (); }
|
|
|
|
|
void opfunc_is_greater_than (OPCODE opdata) { unreachable (); }
|
|
|
|
|
void opfunc_is_greater_or_equal (OPCODE opdata) { unreachable (); }
|
|
|
|
|
void opfunc_is_equal_value (OPCODE opdata) { unreachable (); }
|
|
|
|
|
void opfunc_is_not_equal_value (OPCODE opdata) { unreachable (); }
|
|
|
|
|
void opfunc_is_equal_value_type (OPCODE opdata) { unreachable (); }
|
|
|
|
|
void opfunc_is_not_equal_value_type (OPCODE opdata) { unreachable (); }
|
|
|
|
|
void opfunc_loop_init_num (OPCODE opdata, struct __int_data *int_data) { unreachable (); }
|
|
|
|
|
void opfunc_loop_precond_begin_num (OPCODE opdata, struct __int_data *int_data) { unreachable (); }
|
|
|
|
|
void opfunc_loop_precond_end_num (OPCODE opdata, struct __int_data *int_data) { unreachable (); }
|
|
|
|
|
void opfunc_loop_postcond (OPCODE opdata, struct __int_data *int_data) { unreachable (); }
|
|
|
|
|
void opfunc_call_2 (OPCODE opdata, struct __int_data *int_data) { unreachable (); }
|
|
|
|
|
void opfunc_call_n (OPCODE opdata, struct __int_data *int_data) { unreachable (); }
|
|
|
|
|
void opfunc_func_decl_1 (OPCODE opdata, struct __int_data *int_data) { unreachable (); }
|
|
|
|
|
void opfunc_func_decl_2 (OPCODE opdata, struct __int_data *int_data) { unreachable (); }
|
|
|
|
|
void opfunc_func_decl_n (OPCODE opdata, struct __int_data *int_data) { unreachable (); }
|
|
|
|
|
void opfunc_varg_1 (OPCODE opdata, struct __int_data *int_data) { unreachable (); }
|
|
|
|
|
void opfunc_varg_1_end (OPCODE opdata, struct __int_data *int_data) { unreachable (); }
|
|
|
|
|
void opfunc_varg_2 (OPCODE opdata, struct __int_data *int_data) { unreachable (); }
|
|
|
|
|
void opfunc_varg_2_end (OPCODE opdata, struct __int_data *int_data) { unreachable (); }
|
|
|
|
|
void opfunc_varg_3 (OPCODE opdata, struct __int_data *int_data) { unreachable (); }
|
|
|
|
|
void opfunc_varg_3_end (OPCODE opdata, struct __int_data *int_data) { unreachable (); }
|
|
|
|
|
void opfunc_retval (OPCODE opdata, struct __int_data *int_data) { unreachable (); }
|
|
|
|
|
void opfunc_ret (OPCODE opdata, struct __int_data *int_data) { unreachable (); }
|
|
|
|
|
void opfunc_assignment (OPCODE opdata, struct __int_data *int_data) { unreachable (); }
|
|
|
|
|
void opfunc_assignment_multiplication (OPCODE opdata, struct __int_data *int_data) { unreachable (); }
|
|
|
|
|
void opfunc_assignment_devision (OPCODE opdata, struct __int_data *int_data) { unreachable (); }
|
|
|
|
|
void opfunc_assignment_remainder (OPCODE opdata, struct __int_data *int_data) { unreachable (); }
|
|
|
|
|
void opfunc_assignment_addition (OPCODE opdata, struct __int_data *int_data) { unreachable (); }
|
|
|
|
|
void opfunc_assignment_substruction (OPCODE opdata, struct __int_data *int_data) { unreachable (); }
|
|
|
|
|
void opfunc_assignment_shift_left (OPCODE opdata, struct __int_data *int_data) { unreachable (); }
|
|
|
|
|
void opfunc_assignment_shift_right (OPCODE opdata, struct __int_data *int_data) { unreachable (); }
|
|
|
|
|
void opfunc_assignment_shift_uright (OPCODE opdata, struct __int_data *int_data) { unreachable (); }
|
|
|
|
|
void opfunc_assignment_b_and (OPCODE opdata, struct __int_data *int_data) { unreachable (); }
|
|
|
|
|
void opfunc_assignment_b_xor (OPCODE opdata, struct __int_data *int_data) { unreachable (); }
|
|
|
|
|
void opfunc_assignment_b_or (OPCODE opdata, struct __int_data *int_data) { unreachable (); }
|
|
|
|
|
void opfunc_logical_and (OPCODE opdata, struct __int_data *int_data) { unreachable (); }
|
|
|
|
|
void opfunc_logical_or (OPCODE opdata, struct __int_data *int_data) { unreachable (); }
|
|
|
|
|
void opfunc_b_and (OPCODE opdata, struct __int_data *int_data) { unreachable (); }
|
|
|
|
|
void opfunc_b_or (OPCODE opdata, struct __int_data *int_data) { unreachable (); }
|
|
|
|
|
void opfunc_b_xor (OPCODE opdata, struct __int_data *int_data) { unreachable (); }
|
|
|
|
|
void opfunc_b_shift_left (OPCODE opdata, struct __int_data *int_data) { unreachable (); }
|
|
|
|
|
void opfunc_b_shift_right (OPCODE opdata, struct __int_data *int_data) { unreachable (); }
|
|
|
|
|
void opfunc_b_shift_uright (OPCODE opdata, struct __int_data *int_data) { unreachable (); }
|
|
|
|
|
void opfunc_addition (OPCODE opdata, struct __int_data *int_data) { unreachable (); }
|
|
|
|
|
void opfunc_substraction (OPCODE opdata, struct __int_data *int_data) { unreachable (); }
|
|
|
|
|
void opfunc_division (OPCODE opdata, struct __int_data *int_data) { unreachable (); }
|
|
|
|
|
void opfunc_multiplication (OPCODE opdata, struct __int_data *int_data) { unreachable (); }
|
|
|
|
|
void opfunc_remainder (OPCODE opdata, struct __int_data *int_data) { unreachable (); }
|
|
|
|
|
void opfunc_jmp_up (OPCODE opdata, struct __int_data *int_data) { unreachable (); }
|
|
|
|
|
void opfunc_jmp_down (OPCODE opdata, struct __int_data *int_data) { unreachable (); }
|
|
|
|
|
void opfunc_is_true_jmp (OPCODE opdata, struct __int_data *int_data) { unreachable (); }
|
|
|
|
|
void opfunc_is_false_jmp (OPCODE opdata, struct __int_data *int_data) { unreachable (); }
|
|
|
|
|
void opfunc_is_less_than (OPCODE opdata, struct __int_data *int_data) { unreachable (); }
|
|
|
|
|
void opfunc_is_less_or_equal (OPCODE opdata, struct __int_data *int_data) { unreachable (); }
|
|
|
|
|
void opfunc_is_greater_than (OPCODE opdata, struct __int_data *int_data) { unreachable (); }
|
|
|
|
|
void opfunc_is_greater_or_equal (OPCODE opdata, struct __int_data *int_data) { unreachable (); }
|
|
|
|
|
void opfunc_is_equal_value (OPCODE opdata, struct __int_data *int_data) { unreachable (); }
|
|
|
|
|
void opfunc_is_not_equal_value (OPCODE opdata, struct __int_data *int_data) { unreachable (); }
|
|
|
|
|
void opfunc_is_equal_value_type (OPCODE opdata, struct __int_data *int_data) { unreachable (); }
|
|
|
|
|
void opfunc_is_not_equal_value_type (OPCODE opdata, struct __int_data *int_data) { unreachable (); }
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
|
opfunc_loop_inf (OPCODE opdata)
|
|
|
|
|
opfunc_loop_inf (OPCODE opdata, struct __int_data *int_data)
|
|
|
|
|
{
|
|
|
|
|
#ifdef __HOST
|
|
|
|
|
printf ("%d::loop_inf:idx:%d\n",
|
|
|
|
|
__int_data.pos,
|
|
|
|
|
int_data->pos,
|
|
|
|
|
opdata.data.loop_inf.loop_root);
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
__int_data.pos = opdata.data.loop_inf.loop_root;
|
|
|
|
|
int_data->pos = opdata.data.loop_inf.loop_root;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
|
opfunc_call_1 (OPCODE opdata)
|
|
|
|
|
opfunc_call_1 (OPCODE opdata, struct __int_data *int_data)
|
|
|
|
|
{
|
|
|
|
|
#ifdef __HOST
|
|
|
|
|
printf ("%d::op_call_1:idx:%d:%d\n",
|
|
|
|
|
__int_data.pos,
|
|
|
|
|
int_data->pos,
|
|
|
|
|
opdata.data.call_1.name_lit_idx,
|
|
|
|
|
opdata.data.call_1.arg1_lit_idx);
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
__int_data.pos++;
|
|
|
|
|
int_data->pos++;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
|
opfunc_jmp (OPCODE opdata)
|
|
|
|
|
opfunc_jmp (OPCODE opdata, struct __int_data *int_data)
|
|
|
|
|
{
|
|
|
|
|
#ifdef __HOST
|
|
|
|
|
printf ("%d::op_jmp:idx:%d\n",
|
|
|
|
|
__int_data.pos,
|
|
|
|
|
int_data->pos,
|
|
|
|
|
opdata.data.jmp.opcode_idx);
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
__int_data.pos = opdata.data.jmp.opcode_idx;
|
|
|
|
|
int_data->pos = opdata.data.jmp.opcode_idx;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
OPCODE
|
|
|
|
|