/* -*- buffer-read-only: t -*- vi: set ro: */ /* THIS FILE IS GENERATED AUTOMATICALLY. PLEASE DO NOT EDIT. */ #line 2 "optab.opc" /* This file is part of Mailfromd. Copyright (C) 2006-2020 Sergey Poznyakoff This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #ifdef HAVE_CONFIG_H # include #endif #include "mailfromd.h" #include "prog.h" #include "optab.h" #line 19 "../src/opcodes" extern void instr_locus(eval_environ_t); #line 21 "../src/opcodes" extern void instr_stkalloc(eval_environ_t); #line 22 "../src/opcodes" extern void instr_xchg(eval_environ_t); #line 23 "../src/opcodes" extern void instr_pop(eval_environ_t); #line 24 "../src/opcodes" extern void instr_dup(eval_environ_t); #line 25 "../src/opcodes" extern void instr_push(eval_environ_t); #line 26 "../src/opcodes" extern void instr_symbol(eval_environ_t); #line 27 "../src/opcodes" extern void instr_backref(eval_environ_t); #line 28 "../src/opcodes" extern void instr_ston(eval_environ_t); #line 29 "../src/opcodes" extern void instr_ntos(eval_environ_t); #line 30 "../src/opcodes" extern void instr_adjust(eval_environ_t); #line 31 "../src/opcodes" extern void instr_popreg(eval_environ_t); #line 32 "../src/opcodes" extern void instr_pushreg(eval_environ_t); #line 34 "../src/opcodes" extern void instr_bz(eval_environ_t); #line 35 "../src/opcodes" extern void instr_bnz(eval_environ_t); #line 36 "../src/opcodes" extern void instr_jmp(eval_environ_t); #line 37 "../src/opcodes" extern void instr_cmp(eval_environ_t); #line 38 "../src/opcodes" extern void instr_xlat(eval_environ_t); #line 39 "../src/opcodes" extern void instr_xlats(eval_environ_t); #line 40 "../src/opcodes" extern void instr_jreg(eval_environ_t); #line 42 "../src/opcodes" extern void instr_regex(eval_environ_t); #line 43 "../src/opcodes" extern void instr_regmatch(eval_environ_t); #line 44 "../src/opcodes" extern void instr_fnmatch(eval_environ_t); #line 45 "../src/opcodes" extern void instr_fnmatch_mx(eval_environ_t); #line 46 "../src/opcodes" extern void instr_regmatch_mx(eval_environ_t); #line 47 "../src/opcodes" extern void instr_regcomp(eval_environ_t); #line 49 "../src/opcodes" extern void instr_not(eval_environ_t); #line 50 "../src/opcodes" extern void instr_eqn(eval_environ_t); #line 51 "../src/opcodes" extern void instr_eqs(eval_environ_t); #line 52 "../src/opcodes" extern void instr_nen(eval_environ_t); #line 53 "../src/opcodes" extern void instr_nes(eval_environ_t); #line 54 "../src/opcodes" extern void instr_ltn(eval_environ_t); #line 55 "../src/opcodes" extern void instr_lts(eval_environ_t); #line 56 "../src/opcodes" extern void instr_len(eval_environ_t); #line 57 "../src/opcodes" extern void instr_les(eval_environ_t); #line 58 "../src/opcodes" extern void instr_gtn(eval_environ_t); #line 59 "../src/opcodes" extern void instr_gts(eval_environ_t); #line 60 "../src/opcodes" extern void instr_gen(eval_environ_t); #line 61 "../src/opcodes" extern void instr_ges(eval_environ_t); #line 63 "../src/opcodes" extern void instr_neg(eval_environ_t); #line 64 "../src/opcodes" extern void instr_add(eval_environ_t); #line 65 "../src/opcodes" extern void instr_sub(eval_environ_t); #line 66 "../src/opcodes" extern void instr_mul(eval_environ_t); #line 67 "../src/opcodes" extern void instr_div(eval_environ_t); #line 68 "../src/opcodes" extern void instr_mod(eval_environ_t); #line 70 "../src/opcodes" extern void instr_logand(eval_environ_t); #line 71 "../src/opcodes" extern void instr_logor(eval_environ_t); #line 72 "../src/opcodes" extern void instr_logxor(eval_environ_t); #line 73 "../src/opcodes" extern void instr_lognot(eval_environ_t); #line 75 "../src/opcodes" extern void instr_shl(eval_environ_t); #line 76 "../src/opcodes" extern void instr_shr(eval_environ_t); #line 78 "../src/opcodes" extern void instr_concat(eval_environ_t); #line 80 "../src/opcodes" extern void instr_memstk(eval_environ_t); #line 81 "../src/opcodes" extern void instr_xmemstk(eval_environ_t); #line 82 "../src/opcodes" extern void instr_deref(eval_environ_t); #line 83 "../src/opcodes" extern void instr_asgn(eval_environ_t); #line 84 "../src/opcodes" extern void instr_builtin(eval_environ_t); #line 86 "../src/opcodes" extern void instr_catch(eval_environ_t); #line 87 "../src/opcodes" extern void instr_throw(eval_environ_t); #line 88 "../src/opcodes" extern void instr_saveex(eval_environ_t); #line 89 "../src/opcodes" extern void instr_restex(eval_environ_t); #line 91 "../src/opcodes" extern void instr_echo(eval_environ_t); #line 92 "../src/opcodes" extern void instr_return(eval_environ_t); #line 93 "../src/opcodes" extern void instr_retcatch(eval_environ_t); #line 94 "../src/opcodes" extern void instr_funcall(eval_environ_t); #line 96 "../src/opcodes" extern void instr_next(eval_environ_t); #line 97 "../src/opcodes" extern void instr_result(eval_environ_t); #line 98 "../src/opcodes" extern void instr_header(eval_environ_t); #line 26 "optab.opc" extern void dump_result(prog_counter_t); extern void dump_regcomp(prog_counter_t); extern void dump_push(prog_counter_t); extern void dump_regex(prog_counter_t); extern void dump_adjust(prog_counter_t); extern void dump_stkalloc(prog_counter_t); extern void dump_funcall(prog_counter_t); extern void dump_builtin(prog_counter_t); extern void dump_branch(prog_counter_t); extern void dump_backref(prog_counter_t); extern void dump_symbol(prog_counter_t); extern void dump_memstk(prog_counter_t); extern void dump_branch(prog_counter_t); extern void dump_branch(prog_counter_t); extern void dump_catch(prog_counter_t); extern void dump_xlat(prog_counter_t); extern void dump_saveex(prog_counter_t); extern void dump_xlats(prog_counter_t); extern void dump_locus(prog_counter_t); extern void dump_throw(prog_counter_t); extern void dump_header(prog_counter_t); struct optab optab[] = { { "STOP", NULL, NULL, 0 }, #line 19 "../src/opcodes" { "LOCUS", instr_locus, dump_locus, 2 }, #line 21 "../src/opcodes" { "STKALLOC", instr_stkalloc, dump_stkalloc, 1 }, #line 22 "../src/opcodes" { "XCHG", instr_xchg, NULL, 0 }, #line 23 "../src/opcodes" { "POP", instr_pop, NULL, 0 }, #line 24 "../src/opcodes" { "DUP", instr_dup, NULL, 0 }, #line 25 "../src/opcodes" { "PUSH", instr_push, dump_push, 1 }, #line 26 "../src/opcodes" { "SYMBOL", instr_symbol, dump_symbol, 1 }, #line 27 "../src/opcodes" { "BACKREF", instr_backref, dump_backref, 1 }, #line 28 "../src/opcodes" { "STON", instr_ston, NULL, 0 }, #line 29 "../src/opcodes" { "NTOS", instr_ntos, NULL, 0 }, #line 30 "../src/opcodes" { "ADJUST", instr_adjust, dump_adjust, 1 }, #line 31 "../src/opcodes" { "POPREG", instr_popreg, NULL, 0 }, #line 32 "../src/opcodes" { "PUSHREG", instr_pushreg, NULL, 0 }, #line 34 "../src/opcodes" { "BZ", instr_bz, dump_branch, 1 }, #line 35 "../src/opcodes" { "BNZ", instr_bnz, dump_branch, 1 }, #line 36 "../src/opcodes" { "JMP", instr_jmp, dump_branch, 1 }, #line 37 "../src/opcodes" { "CMP", instr_cmp, NULL, 0 }, #line 38 "../src/opcodes" { "XLAT", instr_xlat, dump_xlat, 2 }, #line 39 "../src/opcodes" { "XLATS", instr_xlats, dump_xlats, 2 }, #line 40 "../src/opcodes" { "JREG", instr_jreg, NULL, 0 }, #line 42 "../src/opcodes" { "REGEX", instr_regex, dump_regex, 1 }, #line 43 "../src/opcodes" { "REGMATCH", instr_regmatch, NULL, 0 }, #line 44 "../src/opcodes" { "FNMATCH", instr_fnmatch, NULL, 0 }, #line 45 "../src/opcodes" { "FNMATCH_MX", instr_fnmatch_mx, NULL, 0 }, #line 46 "../src/opcodes" { "REGMATCH_MX", instr_regmatch_mx, NULL, 0 }, #line 47 "../src/opcodes" { "REGCOMP", instr_regcomp, dump_regcomp, 1 }, #line 49 "../src/opcodes" { "NOT", instr_not, NULL, 0 }, #line 50 "../src/opcodes" { "EQN", instr_eqn, NULL, 0 }, #line 51 "../src/opcodes" { "EQS", instr_eqs, NULL, 0 }, #line 52 "../src/opcodes" { "NEN", instr_nen, NULL, 0 }, #line 53 "../src/opcodes" { "NES", instr_nes, NULL, 0 }, #line 54 "../src/opcodes" { "LTN", instr_ltn, NULL, 0 }, #line 55 "../src/opcodes" { "LTS", instr_lts, NULL, 0 }, #line 56 "../src/opcodes" { "LEN", instr_len, NULL, 0 }, #line 57 "../src/opcodes" { "LES", instr_les, NULL, 0 }, #line 58 "../src/opcodes" { "GTN", instr_gtn, NULL, 0 }, #line 59 "../src/opcodes" { "GTS", instr_gts, NULL, 0 }, #line 60 "../src/opcodes" { "GEN", instr_gen, NULL, 0 }, #line 61 "../src/opcodes" { "GES", instr_ges, NULL, 0 }, #line 63 "../src/opcodes" { "NEG", instr_neg, NULL, 0 }, #line 64 "../src/opcodes" { "ADD", instr_add, NULL, 0 }, #line 65 "../src/opcodes" { "SUB", instr_sub, NULL, 0 }, #line 66 "../src/opcodes" { "MUL", instr_mul, NULL, 0 }, #line 67 "../src/opcodes" { "DIV", instr_div, NULL, 0 }, #line 68 "../src/opcodes" { "MOD", instr_mod, NULL, 0 }, #line 70 "../src/opcodes" { "LOGAND", instr_logand, NULL, 0 }, #line 71 "../src/opcodes" { "LOGOR", instr_logor, NULL, 0 }, #line 72 "../src/opcodes" { "LOGXOR", instr_logxor, NULL, 0 }, #line 73 "../src/opcodes" { "LOGNOT", instr_lognot, NULL, 0 }, #line 75 "../src/opcodes" { "SHL", instr_shl, NULL, 0 }, #line 76 "../src/opcodes" { "SHR", instr_shr, NULL, 0 }, #line 78 "../src/opcodes" { "CONCAT", instr_concat, NULL, 0 }, #line 80 "../src/opcodes" { "MEMSTK", instr_memstk, dump_memstk, 2 }, #line 81 "../src/opcodes" { "XMEMSTK", instr_xmemstk, NULL, 0 }, #line 82 "../src/opcodes" { "DEREF", instr_deref, NULL, 0 }, #line 83 "../src/opcodes" { "ASGN", instr_asgn, NULL, 0 }, #line 84 "../src/opcodes" { "BUILTIN", instr_builtin, dump_builtin, 2 }, #line 86 "../src/opcodes" { "CATCH", instr_catch, dump_catch, 2 }, #line 87 "../src/opcodes" { "THROW", instr_throw, dump_throw, 1 }, #line 88 "../src/opcodes" { "SAVEEX", instr_saveex, dump_saveex, 1 }, #line 89 "../src/opcodes" { "RESTEX", instr_restex, NULL, 0 }, #line 91 "../src/opcodes" { "ECHO", instr_echo, NULL, 0 }, #line 92 "../src/opcodes" { "RETURN", instr_return, NULL, 0 }, #line 93 "../src/opcodes" { "RETCATCH", instr_retcatch, NULL, 0 }, #line 94 "../src/opcodes" { "FUNCALL", instr_funcall, dump_funcall, 2 }, #line 96 "../src/opcodes" { "NEXT", instr_next, NULL, 0 }, #line 97 "../src/opcodes" { "RESULT", instr_result, dump_result, 1 }, #line 98 "../src/opcodes" { "HEADER", instr_header, dump_header, 2 }, #line 31 "optab.opc" { NULL }, }; void scan_code(prog_counter_t start, prog_counter_t end, void (*fun)(prog_counter_t, struct optab *, void *), void *data) { prog_counter_t i; for (i = start; i < end; i++) { if (mf_cell_c_value(prog[i], uint)) { struct optab *op; unsigned opcode = mf_cell_c_value(prog[i], uint); if (opcode > max_instr_opcode) { mu_error(_("%08lx: unknown opcode %u; aborting dump"), (unsigned long) i, opcode); exit(1); } op = &optab[opcode]; fun(i, op, data); i += op->length; } else fun(i, &optab[opcode_nil], data); } }