M680x.java
Go to the documentation of this file.
1 // Capstone Java binding
2 /* M680X Backend by Wolfgang Schwotzer <wolfgang.schwotzer@gmx.net> 2017 */
3 
4 package capstone;
5 
6 import com.sun.jna.Structure;
7 import com.sun.jna.Union;
8 
9 import java.util.List;
10 import java.util.Arrays;
11 
12 import static capstone.M680x_const.*;
13 
14 public class M680x {
15 
16  public static class OpIndexed extends Structure {
17  public int base_reg;
18  public int offset_reg;
19  public short offset;
20  public short offset_addr;
21  public byte offset_bits;
22  public byte inc_dec;
23  public byte flags;
24 
25  @Override
26  public List getFieldOrder() {
27  return Arrays.asList("base_reg", "offset_reg", "offset", "offset_addr", "offset_bits", "inc_dec", "flags");
28  }
29  }
30 
31  public static class OpRelative extends Structure {
32  public short address;
33  public short offset;
34 
35  @Override
36  public List getFieldOrder() {
37  return Arrays.asList("address", "offset");
38  }
39  }
40 
41  public static class OpExtended extends Structure {
42  public short address;
43  public byte indirect;
44 
45  @Override
46  public List getFieldOrder() {
47  return Arrays.asList("address", "indirect");
48  }
49  }
50 
51  public static class OpValue extends Union {
52  public int imm;
53  public int reg;
54  public OpIndexed idx;
55  public OpRelative rel;
56  public OpExtended ext;
57  public byte direct_addr;
58  public byte const_val;
59 
60  @Override
61  public List getFieldOrder() {
62  return Arrays.asList("imm", "reg", "idx", "rel", "ext", "direct_addr", "const_val");
63  }
64  }
65 
66  public static class Operand extends Structure {
67  public int type;
68  public OpValue value;
69  public byte size;
70  public byte access;
71 
72  public void read() {
73  readField("type");
74  if (type == M680X_OP_IMMEDIATE)
75  value.setType(Integer.TYPE);
76  if (type == M680X_OP_REGISTER)
77  value.setType(Integer.TYPE);
78  if (type == M680X_OP_INDEXED)
79  value.setType(OpIndexed.class);
80  if (type == M680X_OP_RELATIVE)
81  value.setType(OpRelative.class);
82  if (type == M680X_OP_EXTENDED)
83  value.setType(OpExtended.class);
84  if (type == M680X_OP_DIRECT)
85  value.setType(Integer.TYPE);
86  if (type == M680X_OP_INVALID)
87  return;
88  readField("value");
89  readField("size");
90  readField("access");
91  }
92 
93  @Override
94  public List getFieldOrder() {
95  return Arrays.asList("type", "value", "size", "access");
96  }
97  }
98 
99  public static class UnionOpInfo extends Capstone.UnionOpInfo {
100  public byte flags;
101  public byte op_count;
102 
103  public Operand [] op;
104 
105  public UnionOpInfo() {
106  op = new Operand[9];
107  }
108 
109  public void read() {
110  readField("flags");
111  readField("op_count");
112  op = new Operand[op_count];
113  if (op_count != 0)
114  readField("op");
115  }
116 
117  @Override
118  public List getFieldOrder() {
119  return Arrays.asList("flags", "op_count", "op");
120  }
121  }
122 
123  public static class OpInfo extends Capstone.OpInfo {
124  public byte flags;
125  public Operand [] op = null;
126 
127  public OpInfo(UnionOpInfo op_info) {
128  flags = op_info.flags;
129  op = op_info.op;
130  }
131  }
132 }
capstone.M680x.Operand.getFieldOrder
List getFieldOrder()
Definition: M680x.java:94
capstone.M680x_const
Definition: M680x_const.java:4
capstone.M680x.OpValue.idx
OpIndexed idx
Definition: M680x.java:54
capstone.M680x.OpRelative.address
short address
Definition: M680x.java:32
capstone.M680x.Operand.size
byte size
Definition: M680x.java:69
M680X_OP_EXTENDED
@ M680X_OP_EXTENDED
= Extended addressing operand.
Definition: m680x.h:60
M680X_OP_DIRECT
@ M680X_OP_DIRECT
= Direct addressing operand.
Definition: m680x.h:61
M680X_OP_IMMEDIATE
@ M680X_OP_IMMEDIATE
= Immediate operand.
Definition: m680x.h:58
capstone.M680x.OpRelative
Definition: M680x.java:31
capstone.M680x.OpIndexed.base_reg
int base_reg
Definition: M680x.java:17
capstone.M680x.OpValue.getFieldOrder
List getFieldOrder()
Definition: M680x.java:61
capstone.M680x.OpValue.ext
OpExtended ext
Definition: M680x.java:56
capstone.M680x.OpRelative.offset
short offset
Definition: M680x.java:33
capstone.M680x.OpValue
Definition: M680x.java:51
capstone.M680x.UnionOpInfo.read
void read()
Definition: M680x.java:109
capstone.M680x.OpIndexed.offset_bits
byte offset_bits
Definition: M680x.java:21
capstone.M680x.Operand
Definition: M680x.java:66
capstone.M680x.OpExtended.getFieldOrder
List getFieldOrder()
Definition: M680x.java:46
capstone.M680x.OpInfo.flags
byte flags
Definition: M680x.java:124
capstone.M680x.OpIndexed
Definition: M680x.java:16
capstone.M680x.OpInfo
Definition: M680x.java:123
capstone.M680x.OpIndexed.offset_reg
int offset_reg
Definition: M680x.java:18
capstone.M680x.OpValue.imm
int imm
Definition: M680x.java:52
capstone.M680x.OpRelative.getFieldOrder
List getFieldOrder()
Definition: M680x.java:36
capstone.M680x.UnionOpInfo.op_count
byte op_count
Definition: M680x.java:101
capstone.M680x.UnionOpInfo.op
Operand[] op
Definition: M680x.java:103
capstone
Definition: Arm.java:4
capstone.M680x.OpInfo.OpInfo
OpInfo(UnionOpInfo op_info)
Definition: M680x.java:127
capstone.M680x.OpValue.reg
int reg
Definition: M680x.java:53
capstone.M680x.OpExtended
Definition: M680x.java:41
java
capstone.M680x.Operand.read
void read()
Definition: M680x.java:72
capstone.M680x.OpValue.const_val
byte const_val
Definition: M680x.java:58
capstone.M680x.OpExtended.indirect
byte indirect
Definition: M680x.java:43
capstone.M680x.OpIndexed.flags
byte flags
Definition: M680x.java:23
absl::flags_internal
Definition: abseil-cpp/absl/flags/commandlineflag.h:40
capstone.M680x
Definition: M680x.java:14
capstone.M680x.UnionOpInfo.getFieldOrder
List getFieldOrder()
Definition: M680x.java:118
capstone.M680x.OpIndexed.inc_dec
byte inc_dec
Definition: M680x.java:22
capstone.M680x.UnionOpInfo.flags
byte flags
Definition: M680x.java:100
M680X_OP_RELATIVE
@ M680X_OP_RELATIVE
= Relative addressing operand.
Definition: m680x.h:62
capstone.M680x.UnionOpInfo
Definition: M680x.java:99
capstone.M680x.OpIndexed.offset_addr
short offset_addr
Definition: M680x.java:20
M680X_OP_INDEXED
@ M680X_OP_INDEXED
= Indexed addressing operand.
Definition: m680x.h:59
capstone.M680x.Operand.type
int type
Definition: M680x.java:67
capstone.M680x.OpIndexed.getFieldOrder
List getFieldOrder()
Definition: M680x.java:26
com
capstone.M680x.Operand.value
OpValue value
Definition: M680x.java:68
M680X_OP_REGISTER
@ M680X_OP_REGISTER
= Register operand.
Definition: m680x.h:57
capstone.M680x.OpInfo.op
Operand[] op
Definition: M680x.java:125
capstone.M680x.Operand.access
byte access
Definition: M680x.java:70
M680X_OP_INVALID
@ M680X_OP_INVALID
= CS_OP_INVALID (Uninitialized).
Definition: m680x.h:56
capstone.M680x.UnionOpInfo.UnionOpInfo
UnionOpInfo()
Definition: M680x.java:105
capstone.M680x.OpValue.rel
OpRelative rel
Definition: M680x.java:55
capstone.M680x.OpValue.direct_addr
byte direct_addr
Definition: M680x.java:57
capstone.M680x.OpExtended.address
short address
Definition: M680x.java:42
capstone.M680x.OpIndexed.offset
short offset
Definition: M680x.java:19


grpc
Author(s):
autogenerated on Thu Mar 13 2025 03:00:30