Arm.java
Go to the documentation of this file.
1 // Capstone Java binding
2 // By Nguyen Anh Quynh & Dang Hoang Vu, 2013
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.Arm_const.*;
13 
14 public class Arm {
15 
16  public static class MemType extends Structure {
17  public int base;
18  public int index;
19  public int scale;
20  public int disp;
21  public int lshift;
22 
23  @Override
24  public List getFieldOrder() {
25  return Arrays.asList("base", "index", "scale", "disp", "lshift");
26  }
27  }
28 
29  public static class OpValue extends Union {
30  public int reg;
31  public int imm;
32  public double fp;
33  public MemType mem;
34  public int setend;
35 
36  @Override
37  public List getFieldOrder() {
38  return Arrays.asList("reg", "imm", "fp", "mem", "setend");
39  }
40  }
41 
42  public static class OpShift extends Structure {
43  public int type;
44  public int value;
45 
46  @Override
47  public List getFieldOrder() {
48  return Arrays.asList("type","value");
49  }
50  }
51 
52  public static class Operand extends Structure {
53  public int vector_index;
54  public OpShift shift;
55  public int type;
56  public OpValue value;
57  public boolean subtracted;
58  public byte access;
59  public byte neon_lane;
60 
61  public void read() {
62  readField("vector_index");
63  readField("type");
64  if (type == ARM_OP_MEM)
65  value.setType(MemType.class);
66  if (type == ARM_OP_FP)
67  value.setType(Double.TYPE);
68  if (type == ARM_OP_PIMM || type == ARM_OP_IMM || type == ARM_OP_CIMM)
69  value.setType(Integer.TYPE);
70  if (type == ARM_OP_REG)
71  value.setType(Integer.TYPE);
72  if (type == ARM_OP_INVALID)
73  return;
74  readField("value");
75  readField("shift");
76  readField("subtracted");
77  readField("access");
78  readField("neon_lane");
79  }
80 
81  @Override
82  public List getFieldOrder() {
83  return Arrays.asList("vector_index", "shift", "type", "value", "subtracted", "access", "neon_lane");
84  }
85  }
86 
87  public static class UnionOpInfo extends Capstone.UnionOpInfo {
88  public boolean usermode;
89  public int vector_size;
90  public int vector_data;
91  public int cps_mode;
92  public int cps_flag;
93  public int cc;
94  public byte update_flags;
95  public byte writeback;
96  public int mem_barrier;
97  public byte op_count;
98 
99  public Operand [] op;
100 
101  public UnionOpInfo() {
102  op = new Operand[36];
103  }
104 
105  public void read() {
106  readField("usermode");
107  readField("vector_size");
108  readField("vector_data");
109  readField("cps_mode");
110  readField("cps_flag");
111  readField("cc");
112  readField("update_flags");
113  readField("writeback");
114  readField("mem_barrier");
115  readField("op_count");
116  op = new Operand[op_count];
117  if (op_count != 0)
118  readField("op");
119  }
120 
121  @Override
122  public List getFieldOrder() {
123  return Arrays.asList("usermode", "vector_size", "vector_data",
124  "cps_mode", "cps_flag", "cc", "update_flags", "writeback", "mem_barrier", "op_count", "op");
125  }
126  }
127 
128  public static class OpInfo extends Capstone.OpInfo {
129  public boolean usermode;
130  public int vectorSize;
131  public int vectorData;
132  public int cpsMode;
133  public int cpsFlag;
134  public int cc;
135  public boolean updateFlags;
136  public boolean writeback;
137  public int memBarrier;
138  public Operand [] op = null;
139 
140  public OpInfo(UnionOpInfo op_info) {
141  usermode = op_info.usermode;
142  vectorSize = op_info.vector_size;
143  vectorData = op_info.vector_data;
144  cpsMode = op_info.cps_mode;
145  cpsFlag = op_info.cps_flag;
146  cc = op_info.cc;
147  updateFlags = (op_info.update_flags > 0);
148  writeback = (op_info.writeback > 0);
149  memBarrier = op_info.mem_barrier;
150  op = op_info.op;
151  }
152  }
153 }
capstone.Arm.OpInfo.op
Operand[] op
Definition: Arm.java:138
capstone.Arm.OpInfo.writeback
boolean writeback
Definition: Arm.java:136
capstone.Arm.Operand
Definition: Arm.java:52
capstone.Arm.OpInfo.vectorSize
int vectorSize
Definition: Arm.java:130
capstone.Arm.OpValue.getFieldOrder
List getFieldOrder()
Definition: Arm.java:37
capstone.Arm.Operand.neon_lane
byte neon_lane
Definition: Arm.java:59
capstone.Arm.UnionOpInfo.cps_mode
int cps_mode
Definition: Arm.java:91
capstone.Arm.Operand.access
byte access
Definition: Arm.java:58
capstone.Arm.UnionOpInfo.op_count
byte op_count
Definition: Arm.java:97
capstone.Arm.OpValue.fp
double fp
Definition: Arm.java:32
capstone.Arm.UnionOpInfo.writeback
byte writeback
Definition: Arm.java:95
capstone.Arm.MemType.base
int base
Definition: Arm.java:17
capstone.Arm.OpInfo.memBarrier
int memBarrier
Definition: Arm.java:137
capstone.Arm.UnionOpInfo.UnionOpInfo
UnionOpInfo()
Definition: Arm.java:101
capstone.Arm.UnionOpInfo.getFieldOrder
List getFieldOrder()
Definition: Arm.java:122
capstone.Arm.OpShift.type
int type
Definition: Arm.java:43
capstone.Arm.UnionOpInfo.update_flags
byte update_flags
Definition: Arm.java:94
capstone.Arm.Operand.getFieldOrder
List getFieldOrder()
Definition: Arm.java:82
capstone.Arm.OpInfo.cc
int cc
Definition: Arm.java:134
capstone.Arm.MemType
Definition: Arm.java:16
capstone.Arm.OpInfo.vectorData
int vectorData
Definition: Arm.java:131
capstone.Arm.UnionOpInfo.usermode
boolean usermode
Definition: Arm.java:88
capstone.Arm.Operand.value
OpValue value
Definition: Arm.java:56
ARM_OP_PIMM
@ ARM_OP_PIMM
P-Immediate (coprocessor registers)
Definition: arm.h:168
capstone.Arm.OpInfo.OpInfo
OpInfo(UnionOpInfo op_info)
Definition: Arm.java:140
capstone.Arm.OpShift
Definition: Arm.java:42
capstone.Arm.UnionOpInfo.vector_size
int vector_size
Definition: Arm.java:89
ARM_OP_REG
@ ARM_OP_REG
= CS_OP_REG (Register operand).
Definition: arm.h:163
capstone.Arm.UnionOpInfo.read
void read()
Definition: Arm.java:105
capstone.Arm.Operand.read
void read()
Definition: Arm.java:61
capstone
Definition: Arm.java:4
capstone.Arm.OpValue.reg
int reg
Definition: Arm.java:30
ARM_OP_FP
@ ARM_OP_FP
= CS_OP_FP (Floating-Point operand).
Definition: arm.h:166
capstone.Arm_const
Definition: Arm_const.java:4
capstone.Arm.OpValue
Definition: Arm.java:29
capstone.Arm.OpShift.getFieldOrder
List getFieldOrder()
Definition: Arm.java:47
capstone.Arm.MemType.index
int index
Definition: Arm.java:18
capstone.Arm.OpInfo.usermode
boolean usermode
Definition: Arm.java:129
capstone.Arm.Operand.type
int type
Definition: Arm.java:55
capstone.Arm.OpValue.imm
int imm
Definition: Arm.java:31
capstone.Arm.OpValue.setend
int setend
Definition: Arm.java:34
java
capstone.Arm.UnionOpInfo.cps_flag
int cps_flag
Definition: Arm.java:92
capstone.Arm.MemType.scale
int scale
Definition: Arm.java:19
capstone.Arm.OpInfo
Definition: Arm.java:128
capstone.Arm.MemType.disp
int disp
Definition: Arm.java:20
capstone.Arm.UnionOpInfo.op
Operand[] op
Definition: Arm.java:99
capstone.Arm.UnionOpInfo.vector_data
int vector_data
Definition: Arm.java:90
capstone.Arm.UnionOpInfo
Definition: Arm.java:87
ARM_OP_IMM
@ ARM_OP_IMM
= CS_OP_IMM (Immediate operand).
Definition: arm.h:164
capstone.Arm.Operand.vector_index
int vector_index
Definition: Arm.java:53
testing::internal::Double
FloatingPoint< double > Double
Definition: bloaty/third_party/googletest/googletest/include/gtest/internal/gtest-internal.h:397
com
capstone.Arm.MemType.getFieldOrder
List getFieldOrder()
Definition: Arm.java:24
capstone.Arm.OpShift.value
int value
Definition: Arm.java:44
capstone.Arm.UnionOpInfo.cc
int cc
Definition: Arm.java:93
ARM_OP_CIMM
@ ARM_OP_CIMM
C-Immediate (coprocessor registers)
Definition: arm.h:167
ARM_OP_INVALID
@ ARM_OP_INVALID
= CS_OP_INVALID (Uninitialized).
Definition: arm.h:162
capstone.Arm
Definition: Arm.java:14
capstone.Arm.OpInfo.cpsMode
int cpsMode
Definition: Arm.java:132
capstone.Arm.Operand.subtracted
boolean subtracted
Definition: Arm.java:57
capstone.Arm.UnionOpInfo.mem_barrier
int mem_barrier
Definition: Arm.java:96
ARM_OP_MEM
@ ARM_OP_MEM
= CS_OP_MEM (Memory operand).
Definition: arm.h:165
capstone.Arm.Operand.shift
OpShift shift
Definition: Arm.java:54
capstone.Arm.OpInfo.cpsFlag
int cpsFlag
Definition: Arm.java:133
capstone.Arm.MemType.lshift
int lshift
Definition: Arm.java:21
capstone.Arm.OpValue.mem
MemType mem
Definition: Arm.java:33
capstone.Arm.OpInfo.updateFlags
boolean updateFlags
Definition: Arm.java:135


grpc
Author(s):
autogenerated on Thu Mar 13 2025 02:58:33