crabstone 4.0.3 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGES.md +20 -0
  3. data/README.md +25 -8
  4. data/lib/crabstone/arch/3/constants.rb +86 -0
  5. data/lib/crabstone/arch/4/constants.rb +116 -0
  6. data/lib/crabstone/arch/5/arm.rb +111 -0
  7. data/lib/crabstone/arch/5/arm64.rb +131 -0
  8. data/lib/crabstone/arch/5/arm64_const.rb +3015 -0
  9. data/lib/crabstone/arch/5/arm_const.rb +840 -0
  10. data/lib/crabstone/arch/5/bpf.rb +81 -0
  11. data/lib/crabstone/arch/5/bpf_const.rb +124 -0
  12. data/lib/crabstone/arch/5/constants.rb +155 -0
  13. data/lib/crabstone/arch/5/evm.rb +20 -0
  14. data/lib/crabstone/arch/5/evm_const.rb +161 -0
  15. data/lib/crabstone/arch/5/m680x.rb +106 -0
  16. data/lib/crabstone/arch/5/m680x_const.rb +426 -0
  17. data/lib/crabstone/arch/5/m68k.rb +129 -0
  18. data/lib/crabstone/arch/5/m68k_const.rb +496 -0
  19. data/lib/crabstone/arch/5/mips.rb +57 -0
  20. data/lib/crabstone/arch/5/mips_const.rb +869 -0
  21. data/lib/crabstone/arch/5/mos65xx.rb +52 -0
  22. data/lib/crabstone/arch/5/mos65xx_const.rb +162 -0
  23. data/lib/crabstone/arch/5/ppc.rb +69 -0
  24. data/lib/crabstone/arch/5/ppc_const.rb +2024 -0
  25. data/lib/crabstone/arch/5/riscv.rb +58 -0
  26. data/lib/crabstone/arch/5/riscv_const.rb +455 -0
  27. data/lib/crabstone/arch/5/sh.rb +72 -0
  28. data/lib/crabstone/arch/5/sh_const.rb +376 -0
  29. data/lib/crabstone/arch/5/sparc.rb +60 -0
  30. data/lib/crabstone/arch/5/sparc_const.rb +439 -0
  31. data/lib/crabstone/arch/5/sysz.rb +60 -0
  32. data/lib/crabstone/arch/5/sysz_const.rb +2532 -0
  33. data/lib/crabstone/arch/5/tms320c64x.rb +87 -0
  34. data/lib/crabstone/arch/5/tms320c64x_const.rb +287 -0
  35. data/lib/crabstone/arch/5/tricore.rb +59 -0
  36. data/lib/crabstone/arch/5/tricore_const.rb +488 -0
  37. data/lib/crabstone/arch/5/wasm.rb +81 -0
  38. data/lib/crabstone/arch/5/wasm_const.rb +201 -0
  39. data/lib/crabstone/arch/5/x86.rb +98 -0
  40. data/lib/crabstone/arch/5/x86_const.rb +1999 -0
  41. data/lib/crabstone/arch/5/xcore.rb +59 -0
  42. data/lib/crabstone/arch/5/xcore_const.rb +171 -0
  43. data/lib/crabstone/arch/extension.rb +2 -1
  44. data/lib/crabstone/arch/register.rb +1 -1
  45. data/lib/crabstone/arch.rb +6 -0
  46. data/lib/crabstone/binding/5/detail.rb +47 -0
  47. data/lib/crabstone/binding/5/instruction.rb +23 -0
  48. data/lib/crabstone/binding.rb +4 -5
  49. data/lib/crabstone/constants.rb +2 -107
  50. data/lib/crabstone/cs_version.rb +2 -3
  51. data/lib/crabstone/disassembler.rb +2 -3
  52. data/lib/crabstone/instruction.rb +0 -1
  53. data/lib/crabstone/version.rb +1 -1
  54. metadata +51 -4
@@ -0,0 +1,439 @@
1
+ # frozen_string_literal: true
2
+
3
+ # THIS FILE WAS AUTO-GENERATED -- DO NOT EDIT!
4
+
5
+ require 'crabstone/arch/register'
6
+
7
+ module Crabstone
8
+ module Sparc
9
+ CC_INVALID = 0
10
+ CC_ICC_A = 8 + 256
11
+ CC_ICC_N = 0 + 256
12
+ CC_ICC_NE = 9 + 256
13
+ CC_ICC_E = 1 + 256
14
+ CC_ICC_G = 10 + 256
15
+ CC_ICC_LE = 2 + 256
16
+ CC_ICC_GE = 11 + 256
17
+ CC_ICC_L = 3 + 256
18
+ CC_ICC_GU = 12 + 256
19
+ CC_ICC_LEU = 4 + 256
20
+ CC_ICC_CC = 13 + 256
21
+ CC_ICC_CS = 5 + 256
22
+ CC_ICC_POS = 14 + 256
23
+ CC_ICC_NEG = 6 + 256
24
+ CC_ICC_VC = 15 + 256
25
+ CC_ICC_VS = 7 + 256
26
+ CC_FCC_A = 8 + 16 + 256
27
+ CC_FCC_N = 0 + 16 + 256
28
+ CC_FCC_U = 7 + 16 + 256
29
+ CC_FCC_G = 6 + 16 + 256
30
+ CC_FCC_UG = 5 + 16 + 256
31
+ CC_FCC_L = 4 + 16 + 256
32
+ CC_FCC_UL = 3 + 16 + 256
33
+ CC_FCC_LG = 2 + 16 + 256
34
+ CC_FCC_NE = 1 + 16 + 256
35
+ CC_FCC_E = 9 + 16 + 256
36
+ CC_FCC_UE = 10 + 16 + 256
37
+ CC_FCC_GE = 11 + 16 + 256
38
+ CC_FCC_UGE = 12 + 16 + 256
39
+ CC_FCC_LE = 13 + 16 + 256
40
+ CC_FCC_ULE = 14 + 16 + 256
41
+ CC_FCC_O = 15 + 16 + 256
42
+
43
+ HINT_INVALID = 0
44
+ HINT_A = 1 << 0
45
+ HINT_PT = 1 << 1
46
+ HINT_PN = 1 << 2
47
+
48
+ OP_INVALID = 0
49
+ OP_REG = 1
50
+ OP_IMM = 2
51
+ OP_MEM = 3
52
+
53
+ REG_INVALID = 0
54
+ REG_F0 = 1
55
+ REG_F1 = 2
56
+ REG_F2 = 3
57
+ REG_F3 = 4
58
+ REG_F4 = 5
59
+ REG_F5 = 6
60
+ REG_F6 = 7
61
+ REG_F7 = 8
62
+ REG_F8 = 9
63
+ REG_F9 = 10
64
+ REG_F10 = 11
65
+ REG_F11 = 12
66
+ REG_F12 = 13
67
+ REG_F13 = 14
68
+ REG_F14 = 15
69
+ REG_F15 = 16
70
+ REG_F16 = 17
71
+ REG_F17 = 18
72
+ REG_F18 = 19
73
+ REG_F19 = 20
74
+ REG_F20 = 21
75
+ REG_F21 = 22
76
+ REG_F22 = 23
77
+ REG_F23 = 24
78
+ REG_F24 = 25
79
+ REG_F25 = 26
80
+ REG_F26 = 27
81
+ REG_F27 = 28
82
+ REG_F28 = 29
83
+ REG_F29 = 30
84
+ REG_F30 = 31
85
+ REG_F31 = 32
86
+ REG_F32 = 33
87
+ REG_F34 = 34
88
+ REG_F36 = 35
89
+ REG_F38 = 36
90
+ REG_F40 = 37
91
+ REG_F42 = 38
92
+ REG_F44 = 39
93
+ REG_F46 = 40
94
+ REG_F48 = 41
95
+ REG_F50 = 42
96
+ REG_F52 = 43
97
+ REG_F54 = 44
98
+ REG_F56 = 45
99
+ REG_F58 = 46
100
+ REG_F60 = 47
101
+ REG_F62 = 48
102
+ REG_FCC0 = 49
103
+ REG_FCC1 = 50
104
+ REG_FCC2 = 51
105
+ REG_FCC3 = 52
106
+ REG_FP = 53
107
+ REG_G0 = 54
108
+ REG_G1 = 55
109
+ REG_G2 = 56
110
+ REG_G3 = 57
111
+ REG_G4 = 58
112
+ REG_G5 = 59
113
+ REG_G6 = 60
114
+ REG_G7 = 61
115
+ REG_I0 = 62
116
+ REG_I1 = 63
117
+ REG_I2 = 64
118
+ REG_I3 = 65
119
+ REG_I4 = 66
120
+ REG_I5 = 67
121
+ REG_I7 = 68
122
+ REG_ICC = 69
123
+ REG_L0 = 70
124
+ REG_L1 = 71
125
+ REG_L2 = 72
126
+ REG_L3 = 73
127
+ REG_L4 = 74
128
+ REG_L5 = 75
129
+ REG_L6 = 76
130
+ REG_L7 = 77
131
+ REG_O0 = 78
132
+ REG_O1 = 79
133
+ REG_O2 = 80
134
+ REG_O3 = 81
135
+ REG_O4 = 82
136
+ REG_O5 = 83
137
+ REG_O7 = 84
138
+ REG_SP = 85
139
+ REG_Y = 86
140
+ REG_XCC = 87
141
+ REG_ENDING = 88
142
+ REG_O6 = REG_SP
143
+ REG_I6 = REG_FP
144
+
145
+ INS_INVALID = 0
146
+ INS_ADDCC = 1
147
+ INS_ADDX = 2
148
+ INS_ADDXCC = 3
149
+ INS_ADDXC = 4
150
+ INS_ADDXCCC = 5
151
+ INS_ADD = 6
152
+ INS_ALIGNADDR = 7
153
+ INS_ALIGNADDRL = 8
154
+ INS_ANDCC = 9
155
+ INS_ANDNCC = 10
156
+ INS_ANDN = 11
157
+ INS_AND = 12
158
+ INS_ARRAY16 = 13
159
+ INS_ARRAY32 = 14
160
+ INS_ARRAY8 = 15
161
+ INS_B = 16
162
+ INS_JMP = 17
163
+ INS_BMASK = 18
164
+ INS_FB = 19
165
+ INS_BRGEZ = 20
166
+ INS_BRGZ = 21
167
+ INS_BRLEZ = 22
168
+ INS_BRLZ = 23
169
+ INS_BRNZ = 24
170
+ INS_BRZ = 25
171
+ INS_BSHUFFLE = 26
172
+ INS_CALL = 27
173
+ INS_CASX = 28
174
+ INS_CAS = 29
175
+ INS_CMASK16 = 30
176
+ INS_CMASK32 = 31
177
+ INS_CMASK8 = 32
178
+ INS_CMP = 33
179
+ INS_EDGE16 = 34
180
+ INS_EDGE16L = 35
181
+ INS_EDGE16LN = 36
182
+ INS_EDGE16N = 37
183
+ INS_EDGE32 = 38
184
+ INS_EDGE32L = 39
185
+ INS_EDGE32LN = 40
186
+ INS_EDGE32N = 41
187
+ INS_EDGE8 = 42
188
+ INS_EDGE8L = 43
189
+ INS_EDGE8LN = 44
190
+ INS_EDGE8N = 45
191
+ INS_FABSD = 46
192
+ INS_FABSQ = 47
193
+ INS_FABSS = 48
194
+ INS_FADDD = 49
195
+ INS_FADDQ = 50
196
+ INS_FADDS = 51
197
+ INS_FALIGNDATA = 52
198
+ INS_FAND = 53
199
+ INS_FANDNOT1 = 54
200
+ INS_FANDNOT1S = 55
201
+ INS_FANDNOT2 = 56
202
+ INS_FANDNOT2S = 57
203
+ INS_FANDS = 58
204
+ INS_FCHKSM16 = 59
205
+ INS_FCMPD = 60
206
+ INS_FCMPEQ16 = 61
207
+ INS_FCMPEQ32 = 62
208
+ INS_FCMPGT16 = 63
209
+ INS_FCMPGT32 = 64
210
+ INS_FCMPLE16 = 65
211
+ INS_FCMPLE32 = 66
212
+ INS_FCMPNE16 = 67
213
+ INS_FCMPNE32 = 68
214
+ INS_FCMPQ = 69
215
+ INS_FCMPS = 70
216
+ INS_FDIVD = 71
217
+ INS_FDIVQ = 72
218
+ INS_FDIVS = 73
219
+ INS_FDMULQ = 74
220
+ INS_FDTOI = 75
221
+ INS_FDTOQ = 76
222
+ INS_FDTOS = 77
223
+ INS_FDTOX = 78
224
+ INS_FEXPAND = 79
225
+ INS_FHADDD = 80
226
+ INS_FHADDS = 81
227
+ INS_FHSUBD = 82
228
+ INS_FHSUBS = 83
229
+ INS_FITOD = 84
230
+ INS_FITOQ = 85
231
+ INS_FITOS = 86
232
+ INS_FLCMPD = 87
233
+ INS_FLCMPS = 88
234
+ INS_FLUSHW = 89
235
+ INS_FMEAN16 = 90
236
+ INS_FMOVD = 91
237
+ INS_FMOVQ = 92
238
+ INS_FMOVRDGEZ = 93
239
+ INS_FMOVRQGEZ = 94
240
+ INS_FMOVRSGEZ = 95
241
+ INS_FMOVRDGZ = 96
242
+ INS_FMOVRQGZ = 97
243
+ INS_FMOVRSGZ = 98
244
+ INS_FMOVRDLEZ = 99
245
+ INS_FMOVRQLEZ = 100
246
+ INS_FMOVRSLEZ = 101
247
+ INS_FMOVRDLZ = 102
248
+ INS_FMOVRQLZ = 103
249
+ INS_FMOVRSLZ = 104
250
+ INS_FMOVRDNZ = 105
251
+ INS_FMOVRQNZ = 106
252
+ INS_FMOVRSNZ = 107
253
+ INS_FMOVRDZ = 108
254
+ INS_FMOVRQZ = 109
255
+ INS_FMOVRSZ = 110
256
+ INS_FMOVS = 111
257
+ INS_FMUL8SUX16 = 112
258
+ INS_FMUL8ULX16 = 113
259
+ INS_FMUL8X16 = 114
260
+ INS_FMUL8X16AL = 115
261
+ INS_FMUL8X16AU = 116
262
+ INS_FMULD = 117
263
+ INS_FMULD8SUX16 = 118
264
+ INS_FMULD8ULX16 = 119
265
+ INS_FMULQ = 120
266
+ INS_FMULS = 121
267
+ INS_FNADDD = 122
268
+ INS_FNADDS = 123
269
+ INS_FNAND = 124
270
+ INS_FNANDS = 125
271
+ INS_FNEGD = 126
272
+ INS_FNEGQ = 127
273
+ INS_FNEGS = 128
274
+ INS_FNHADDD = 129
275
+ INS_FNHADDS = 130
276
+ INS_FNOR = 131
277
+ INS_FNORS = 132
278
+ INS_FNOT1 = 133
279
+ INS_FNOT1S = 134
280
+ INS_FNOT2 = 135
281
+ INS_FNOT2S = 136
282
+ INS_FONE = 137
283
+ INS_FONES = 138
284
+ INS_FOR = 139
285
+ INS_FORNOT1 = 140
286
+ INS_FORNOT1S = 141
287
+ INS_FORNOT2 = 142
288
+ INS_FORNOT2S = 143
289
+ INS_FORS = 144
290
+ INS_FPACK16 = 145
291
+ INS_FPACK32 = 146
292
+ INS_FPACKFIX = 147
293
+ INS_FPADD16 = 148
294
+ INS_FPADD16S = 149
295
+ INS_FPADD32 = 150
296
+ INS_FPADD32S = 151
297
+ INS_FPADD64 = 152
298
+ INS_FPMERGE = 153
299
+ INS_FPSUB16 = 154
300
+ INS_FPSUB16S = 155
301
+ INS_FPSUB32 = 156
302
+ INS_FPSUB32S = 157
303
+ INS_FQTOD = 158
304
+ INS_FQTOI = 159
305
+ INS_FQTOS = 160
306
+ INS_FQTOX = 161
307
+ INS_FSLAS16 = 162
308
+ INS_FSLAS32 = 163
309
+ INS_FSLL16 = 164
310
+ INS_FSLL32 = 165
311
+ INS_FSMULD = 166
312
+ INS_FSQRTD = 167
313
+ INS_FSQRTQ = 168
314
+ INS_FSQRTS = 169
315
+ INS_FSRA16 = 170
316
+ INS_FSRA32 = 171
317
+ INS_FSRC1 = 172
318
+ INS_FSRC1S = 173
319
+ INS_FSRC2 = 174
320
+ INS_FSRC2S = 175
321
+ INS_FSRL16 = 176
322
+ INS_FSRL32 = 177
323
+ INS_FSTOD = 178
324
+ INS_FSTOI = 179
325
+ INS_FSTOQ = 180
326
+ INS_FSTOX = 181
327
+ INS_FSUBD = 182
328
+ INS_FSUBQ = 183
329
+ INS_FSUBS = 184
330
+ INS_FXNOR = 185
331
+ INS_FXNORS = 186
332
+ INS_FXOR = 187
333
+ INS_FXORS = 188
334
+ INS_FXTOD = 189
335
+ INS_FXTOQ = 190
336
+ INS_FXTOS = 191
337
+ INS_FZERO = 192
338
+ INS_FZEROS = 193
339
+ INS_JMPL = 194
340
+ INS_LDD = 195
341
+ INS_LD = 196
342
+ INS_LDQ = 197
343
+ INS_LDSB = 198
344
+ INS_LDSH = 199
345
+ INS_LDSW = 200
346
+ INS_LDUB = 201
347
+ INS_LDUH = 202
348
+ INS_LDX = 203
349
+ INS_LZCNT = 204
350
+ INS_MEMBAR = 205
351
+ INS_MOVDTOX = 206
352
+ INS_MOV = 207
353
+ INS_MOVRGEZ = 208
354
+ INS_MOVRGZ = 209
355
+ INS_MOVRLEZ = 210
356
+ INS_MOVRLZ = 211
357
+ INS_MOVRNZ = 212
358
+ INS_MOVRZ = 213
359
+ INS_MOVSTOSW = 214
360
+ INS_MOVSTOUW = 215
361
+ INS_MULX = 216
362
+ INS_NOP = 217
363
+ INS_ORCC = 218
364
+ INS_ORNCC = 219
365
+ INS_ORN = 220
366
+ INS_OR = 221
367
+ INS_PDIST = 222
368
+ INS_PDISTN = 223
369
+ INS_POPC = 224
370
+ INS_RD = 225
371
+ INS_RESTORE = 226
372
+ INS_RETT = 227
373
+ INS_SAVE = 228
374
+ INS_SDIVCC = 229
375
+ INS_SDIVX = 230
376
+ INS_SDIV = 231
377
+ INS_SETHI = 232
378
+ INS_SHUTDOWN = 233
379
+ INS_SIAM = 234
380
+ INS_SLLX = 235
381
+ INS_SLL = 236
382
+ INS_SMULCC = 237
383
+ INS_SMUL = 238
384
+ INS_SRAX = 239
385
+ INS_SRA = 240
386
+ INS_SRLX = 241
387
+ INS_SRL = 242
388
+ INS_STBAR = 243
389
+ INS_STB = 244
390
+ INS_STD = 245
391
+ INS_ST = 246
392
+ INS_STH = 247
393
+ INS_STQ = 248
394
+ INS_STX = 249
395
+ INS_SUBCC = 250
396
+ INS_SUBX = 251
397
+ INS_SUBXCC = 252
398
+ INS_SUB = 253
399
+ INS_SWAP = 254
400
+ INS_TADDCCTV = 255
401
+ INS_TADDCC = 256
402
+ INS_T = 257
403
+ INS_TSUBCCTV = 258
404
+ INS_TSUBCC = 259
405
+ INS_UDIVCC = 260
406
+ INS_UDIVX = 261
407
+ INS_UDIV = 262
408
+ INS_UMULCC = 263
409
+ INS_UMULXHI = 264
410
+ INS_UMUL = 265
411
+ INS_UNIMP = 266
412
+ INS_FCMPED = 267
413
+ INS_FCMPEQ = 268
414
+ INS_FCMPES = 269
415
+ INS_WR = 270
416
+ INS_XMULX = 271
417
+ INS_XMULXHI = 272
418
+ INS_XNORCC = 273
419
+ INS_XNOR = 274
420
+ INS_XORCC = 275
421
+ INS_XOR = 276
422
+ INS_RET = 277
423
+ INS_RETL = 278
424
+ INS_ENDING = 279
425
+
426
+ GRP_INVALID = 0
427
+ GRP_JUMP = 1
428
+ GRP_HARDQUAD = 128
429
+ GRP_V9 = 129
430
+ GRP_VIS = 130
431
+ GRP_VIS2 = 131
432
+ GRP_VIS3 = 132
433
+ GRP_32BIT = 133
434
+ GRP_64BIT = 134
435
+ GRP_ENDING = 135
436
+
437
+ extend Register
438
+ end
439
+ end
@@ -0,0 +1,60 @@
1
+ # frozen_string_literal: true
2
+
3
+ # THIS FILE WAS AUTO-GENERATED -- DO NOT EDIT!
4
+
5
+ require 'ffi'
6
+
7
+ require 'crabstone/arch/extension'
8
+ require_relative 'sysz_const'
9
+
10
+ module Crabstone
11
+ module SysZ
12
+ class OperandMemory < FFI::Struct
13
+ layout(
14
+ :base, :uint8,
15
+ :index, :uint8,
16
+ :length, :ulong,
17
+ :disp, :long
18
+ )
19
+ end
20
+
21
+ class OperandValue < FFI::Union
22
+ layout(
23
+ :reg, :uint,
24
+ :imm, :long,
25
+ :mem, OperandMemory
26
+ )
27
+ end
28
+
29
+ class Operand < FFI::Struct
30
+ layout(
31
+ :type, :uint,
32
+ :value, OperandValue
33
+ )
34
+
35
+ include Crabstone::Extension::Operand
36
+
37
+ def reg?
38
+ self[:type] == OP_REG
39
+ end
40
+
41
+ def imm?
42
+ self[:type] == OP_IMM
43
+ end
44
+
45
+ def mem?
46
+ self[:type] == OP_MEM
47
+ end
48
+ end
49
+
50
+ class Instruction < FFI::Struct
51
+ layout(
52
+ :cc, :uint,
53
+ :op_count, :uint8,
54
+ :operands, [Operand, 6]
55
+ )
56
+
57
+ include Crabstone::Extension::Instruction
58
+ end
59
+ end
60
+ end