/** -*-c-*- This file contains instruction information for yarv instruction sequence. ---- This file is auto generated by insns2vm.rb DO NOT TOUCH! If you want to fix something, you must edit 'template/insns_info.inc.tmpl' or insns2vm.rb */ <%= insn_type_chars %> static char *insn_name_info[] = { <%= insn_names %> }; static char *insn_operand_info[] = { <%= operands_info %> }; static int insn_len_info[] = { <%= operands_num_info %> }; #ifdef USE_INSN_RET_NUM static int insn_stack_push_num_info[] = { <%= stack_num_info %> }; #endif #ifdef USE_INSN_STACK_INCREASE static int insn_stack_increase(int depth, int insn, VALUE *opes) { switch(insn){ <%= stack_increase %> default: rb_bug("insn_sp_increase: unreachable"); } return 0; } #endif /* some utilities */ static int insn_len(int insn) { return insn_len_info[insn]; } static char * insn_name(int insn) { return insn_name_info[insn]; } static char * insn_op_types(int insn) { return insn_operand_info[insn]; } static int insn_op_type(int insn, int pos) { int len = insn_len(insn) - 1; if(pos < len){ return insn_operand_info[insn][pos]; } else{ return 0; } } #ifdef USE_INSN_RET_NUM static int insn_ret_num(int insn) { return insn_stack_push_num_info[insn]; } #endif