Commit | Line | Data |
---|---|---|
94d5e490 | 1 | /* Definition of agent opcode values. -*- c -*- |
42a4f53d | 2 | Copyright (C) 1998-2019 Free Software Foundation, Inc. |
94d5e490 TT |
3 | |
4 | This file is part of GDB. | |
5 | ||
6 | This program is free software; you can redistribute it and/or modify | |
7 | it under the terms of the GNU General Public License as published by | |
8 | the Free Software Foundation; either version 3 of the License, or | |
9 | (at your option) any later version. | |
10 | ||
11 | This program is distributed in the hope that it will be useful, | |
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
14 | GNU General Public License for more details. | |
15 | ||
16 | You should have received a copy of the GNU General Public License | |
17 | along with this program. If not, see <http://www.gnu.org/licenses/>. */ | |
18 | ||
19 | /* The actual values of the various bytecode operations. | |
20 | ||
21 | Other independent implementations of the agent bytecode engine will | |
22 | rely on the exact values of these enums, and may not be recompiled | |
23 | when we change this table. The numeric values should remain fixed | |
24 | whenever possible. Thus, we assign them values explicitly here (to | |
25 | allow gaps to form safely), and the disassembly table in | |
26 | agentexpr.h behaves like an opcode map. If you want to see them | |
27 | grouped logically, see doc/agentexpr.texi. | |
28 | ||
29 | Each line is of the form: | |
30 | ||
31 | DEFOP (name, size, data_size, consumed, produced, opcode) | |
32 | ||
33 | NAME is the name of the operation. | |
34 | SIZE is the number of argument bytes that the operation takes from | |
35 | the bytecode stream. | |
36 | DATA_SIZE is the size of data operated on, in bits, for operations | |
37 | that care (ref and const). It is zero otherwise. | |
38 | CONSUMED is the number of stack elements consumed. | |
39 | PRODUCED is the number of stack elements produced. | |
40 | OPCODE is the operation's encoding. */ | |
41 | ||
42 | DEFOP (float, 0, 0, 0, 0, 0x01) | |
43 | DEFOP (add, 0, 0, 2, 1, 0x02) | |
44 | DEFOP (sub, 0, 0, 2, 1, 0x03) | |
45 | DEFOP (mul, 0, 0, 2, 1, 0x04) | |
46 | DEFOP (div_signed, 0, 0, 2, 1, 0x05) | |
47 | DEFOP (div_unsigned, 0, 0, 2, 1, 0x06) | |
48 | DEFOP (rem_signed, 0, 0, 2, 1, 0x07) | |
49 | DEFOP (rem_unsigned, 0, 0, 2, 1, 0x08) | |
50 | DEFOP (lsh, 0, 0, 2, 1, 0x09) | |
51 | DEFOP (rsh_signed, 0, 0, 2, 1, 0x0a) | |
52 | DEFOP (rsh_unsigned, 0, 0, 2, 1, 0x0b) | |
53 | DEFOP (trace, 0, 0, 2, 0, 0x0c) | |
54 | DEFOP (trace_quick, 1, 0, 1, 1, 0x0d) | |
55 | DEFOP (log_not, 0, 0, 1, 1, 0x0e) | |
56 | DEFOP (bit_and, 0, 0, 2, 1, 0x0f) | |
57 | DEFOP (bit_or, 0, 0, 2, 1, 0x10) | |
58 | DEFOP (bit_xor, 0, 0, 2, 1, 0x11) | |
59 | DEFOP (bit_not, 0, 0, 1, 1, 0x12) | |
60 | DEFOP (equal, 0, 0, 2, 1, 0x13) | |
61 | DEFOP (less_signed, 0, 0, 2, 1, 0x14) | |
62 | DEFOP (less_unsigned, 0, 0, 2, 1, 0x15) | |
63 | DEFOP (ext, 1, 0, 1, 1, 0x16) | |
64 | DEFOP (ref8, 0, 8, 1, 1, 0x17) | |
65 | DEFOP (ref16, 0, 16, 1, 1, 0x18) | |
66 | DEFOP (ref32, 0, 32, 1, 1, 0x19) | |
67 | DEFOP (ref64, 0, 64, 1, 1, 0x1a) | |
68 | DEFOP (ref_float, 0, 0, 1, 1, 0x1b) | |
69 | DEFOP (ref_double, 0, 0, 1, 1, 0x1c) | |
70 | DEFOP (ref_long_double, 0, 0, 1, 1, 0x1d) | |
71 | DEFOP (l_to_d, 0, 0, 1, 1, 0x1e) | |
72 | DEFOP (d_to_l, 0, 0, 1, 1, 0x1f) | |
73 | DEFOP (if_goto, 2, 0, 1, 0, 0x20) | |
74 | DEFOP (goto, 2, 0, 0, 0, 0x21) | |
75 | DEFOP (const8, 1, 8, 0, 1, 0x22) | |
76 | DEFOP (const16, 2, 16, 0, 1, 0x23) | |
77 | DEFOP (const32, 4, 32, 0, 1, 0x24) | |
78 | DEFOP (const64, 8, 64, 0, 1, 0x25) | |
79 | DEFOP (reg, 2, 0, 0, 1, 0x26) | |
80 | DEFOP (end, 0, 0, 0, 0, 0x27) | |
81 | DEFOP (dup, 0, 0, 1, 2, 0x28) | |
82 | DEFOP (pop, 0, 0, 1, 0, 0x29) | |
83 | DEFOP (zero_ext, 1, 0, 1, 1, 0x2a) | |
84 | DEFOP (swap, 0, 0, 2, 2, 0x2b) | |
85 | DEFOP (getv, 2, 0, 0, 1, 0x2c) | |
53cf2ee0 | 86 | DEFOP (setv, 2, 0, 1, 1, 0x2d) |
94d5e490 | 87 | DEFOP (tracev, 2, 0, 0, 1, 0x2e) |
3065dfb6 | 88 | DEFOP (tracenz, 0, 0, 2, 0, 0x2f) |
94d5e490 | 89 | DEFOP (trace16, 2, 0, 1, 1, 0x30) |
a04b0428 | 90 | /* We need something here just to make the tables come out ok. */ |
ee00cd23 | 91 | DEFOP (invalid2, 0, 0, 0, 0, 0x31) |
a04b0428 JB |
92 | /* The "consumed" number for pick is wrong, but there's no way to |
93 | express the right thing. */ | |
94d5e490 TT |
94 | DEFOP (pick, 1, 0, 0, 1, 0x32) |
95 | DEFOP (rot, 0, 0, 3, 3, 0x33) | |
d3ce09f5 SS |
96 | /* Both the argument and consumed numbers are dynamic for this one. */ |
97 | DEFOP (printf, 0, 0, 0, 0, 0x34) |