| /* Definition of agent opcode values.   -*- c -*- | 
 |    Copyright (C) 1998-2022 Free Software Foundation, Inc. | 
 |  | 
 |    This file is part of GDB. | 
 |  | 
 |    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 of the License, 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 <http://www.gnu.org/licenses/>.  */ | 
 |  | 
 | /* The actual values of the various bytecode operations. | 
 |  | 
 |    Other independent implementations of the agent bytecode engine will | 
 |    rely on the exact values of these enums, and may not be recompiled | 
 |    when we change this table.  The numeric values should remain fixed | 
 |    whenever possible.  Thus, we assign them values explicitly here (to | 
 |    allow gaps to form safely), and the disassembly table in | 
 |    agentexpr.h behaves like an opcode map.  If you want to see them | 
 |    grouped logically, see doc/agentexpr.texi. | 
 |  | 
 |    Each line is of the form: | 
 |     | 
 |    DEFOP (name, size, data_size, consumed, produced, opcode) | 
 |     | 
 |    NAME is the name of the operation. | 
 |    SIZE is the number of argument bytes that the operation takes from | 
 |    the bytecode stream. | 
 |    DATA_SIZE is the size of data operated on, in bits, for operations | 
 |    that care (ref and const).  It is zero otherwise. | 
 |    CONSUMED is the number of stack elements consumed. | 
 |    PRODUCED is the number of stack elements produced. | 
 |    OPCODE is the operation's encoding.  */ | 
 |  | 
 | DEFOP (float, 0, 0, 0, 0, 0x01) | 
 | DEFOP (add, 0, 0, 2, 1, 0x02) | 
 | DEFOP (sub, 0, 0, 2, 1, 0x03) | 
 | DEFOP (mul, 0, 0, 2, 1, 0x04) | 
 | DEFOP (div_signed, 0, 0, 2, 1, 0x05) | 
 | DEFOP (div_unsigned, 0, 0, 2, 1, 0x06) | 
 | DEFOP (rem_signed, 0, 0, 2, 1, 0x07) | 
 | DEFOP (rem_unsigned, 0, 0, 2, 1, 0x08) | 
 | DEFOP (lsh, 0, 0, 2, 1, 0x09) | 
 | DEFOP (rsh_signed, 0, 0, 2, 1, 0x0a) | 
 | DEFOP (rsh_unsigned, 0, 0, 2, 1, 0x0b) | 
 | DEFOP (trace, 0, 0, 2, 0, 0x0c) | 
 | DEFOP (trace_quick, 1, 0, 1, 1, 0x0d) | 
 | DEFOP (log_not, 0, 0, 1, 1, 0x0e) | 
 | DEFOP (bit_and, 0, 0, 2, 1, 0x0f) | 
 | DEFOP (bit_or, 0, 0, 2, 1, 0x10) | 
 | DEFOP (bit_xor, 0, 0, 2, 1, 0x11) | 
 | DEFOP (bit_not, 0, 0, 1, 1, 0x12) | 
 | DEFOP (equal, 0, 0, 2, 1, 0x13) | 
 | DEFOP (less_signed, 0, 0, 2, 1, 0x14) | 
 | DEFOP (less_unsigned, 0, 0, 2, 1, 0x15) | 
 | DEFOP (ext, 1, 0, 1, 1, 0x16) | 
 | DEFOP (ref8, 0, 8, 1, 1, 0x17) | 
 | DEFOP (ref16, 0, 16, 1, 1, 0x18) | 
 | DEFOP (ref32, 0, 32, 1, 1, 0x19) | 
 | DEFOP (ref64, 0, 64, 1, 1, 0x1a) | 
 | DEFOP (ref_float, 0, 0, 1, 1, 0x1b) | 
 | DEFOP (ref_double, 0, 0, 1, 1, 0x1c) | 
 | DEFOP (ref_long_double, 0, 0, 1, 1, 0x1d) | 
 | DEFOP (l_to_d, 0, 0, 1, 1, 0x1e) | 
 | DEFOP (d_to_l, 0, 0, 1, 1, 0x1f) | 
 | DEFOP (if_goto, 2, 0, 1, 0, 0x20) | 
 | DEFOP (goto, 2, 0, 0, 0, 0x21) | 
 | DEFOP (const8, 1, 8, 0, 1, 0x22) | 
 | DEFOP (const16, 2, 16, 0, 1, 0x23) | 
 | DEFOP (const32, 4, 32, 0, 1, 0x24) | 
 | DEFOP (const64, 8, 64, 0, 1, 0x25) | 
 | DEFOP (reg, 2, 0, 0, 1, 0x26) | 
 | DEFOP (end, 0, 0, 0, 0, 0x27) | 
 | DEFOP (dup, 0, 0, 1, 2, 0x28) | 
 | DEFOP (pop, 0, 0, 1, 0, 0x29) | 
 | DEFOP (zero_ext, 1, 0, 1, 1, 0x2a) | 
 | DEFOP (swap, 0, 0, 2, 2, 0x2b) | 
 | DEFOP (getv, 2, 0, 0, 1, 0x2c) | 
 | DEFOP (setv, 2, 0, 1, 1, 0x2d) | 
 | DEFOP (tracev, 2, 0, 0, 1, 0x2e) | 
 | DEFOP (tracenz, 0, 0, 2, 0, 0x2f) | 
 | DEFOP (trace16, 2, 0, 1, 1, 0x30) | 
 | /* We need something here just to make the tables come out ok.  */ | 
 | DEFOP (invalid2, 0, 0, 0, 0, 0x31) | 
 | /* The "consumed" number for pick is wrong, but there's no way to | 
 |    express the right thing.  */ | 
 | DEFOP (pick, 1, 0, 0, 1, 0x32) | 
 | DEFOP (rot, 0, 0, 3, 3, 0x33) | 
 | /* Both the argument and consumed numbers are dynamic for this one.  */ | 
 | DEFOP (printf, 0, 0, 0, 0, 0x34) |