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,496 @@
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 M68K
9
+ OPERAND_COUNT = 4
10
+
11
+ REG_INVALID = 0
12
+ REG_D0 = 1
13
+ REG_D1 = 2
14
+ REG_D2 = 3
15
+ REG_D3 = 4
16
+ REG_D4 = 5
17
+ REG_D5 = 6
18
+ REG_D6 = 7
19
+ REG_D7 = 8
20
+ REG_A0 = 9
21
+ REG_A1 = 10
22
+ REG_A2 = 11
23
+ REG_A3 = 12
24
+ REG_A4 = 13
25
+ REG_A5 = 14
26
+ REG_A6 = 15
27
+ REG_A7 = 16
28
+ REG_FP0 = 17
29
+ REG_FP1 = 18
30
+ REG_FP2 = 19
31
+ REG_FP3 = 20
32
+ REG_FP4 = 21
33
+ REG_FP5 = 22
34
+ REG_FP6 = 23
35
+ REG_FP7 = 24
36
+ REG_PC = 25
37
+ REG_SR = 26
38
+ REG_CCR = 27
39
+ REG_SFC = 28
40
+ REG_DFC = 29
41
+ REG_USP = 30
42
+ REG_VBR = 31
43
+ REG_CACR = 32
44
+ REG_CAAR = 33
45
+ REG_MSP = 34
46
+ REG_ISP = 35
47
+ REG_TC = 36
48
+ REG_ITT0 = 37
49
+ REG_ITT1 = 38
50
+ REG_DTT0 = 39
51
+ REG_DTT1 = 40
52
+ REG_MMUSR = 41
53
+ REG_URP = 42
54
+ REG_SRP = 43
55
+ REG_FPCR = 44
56
+ REG_FPSR = 45
57
+ REG_FPIAR = 46
58
+ REG_ENDING = 47
59
+
60
+ AM_NONE = 0
61
+ AM_REG_DIRECT_DATA = 1
62
+ AM_REG_DIRECT_ADDR = 2
63
+ AM_REGI_ADDR = 3
64
+ AM_REGI_ADDR_POST_INC = 4
65
+ AM_REGI_ADDR_PRE_DEC = 5
66
+ AM_REGI_ADDR_DISP = 6
67
+ AM_AREGI_INDEX_8_BIT_DISP = 7
68
+ AM_AREGI_INDEX_BASE_DISP = 8
69
+ AM_MEMI_POST_INDEX = 9
70
+ AM_MEMI_PRE_INDEX = 10
71
+ AM_PCI_DISP = 11
72
+ AM_PCI_INDEX_8_BIT_DISP = 12
73
+ AM_PCI_INDEX_BASE_DISP = 13
74
+ AM_PC_MEMI_POST_INDEX = 14
75
+ AM_PC_MEMI_PRE_INDEX = 15
76
+ AM_ABSOLUTE_DATA_SHORT = 16
77
+ AM_ABSOLUTE_DATA_LONG = 17
78
+ AM_IMMEDIATE = 18
79
+ AM_BRANCH_DISPLACEMENT = 19
80
+
81
+ OP_INVALID = 0
82
+ OP_REG = 1
83
+ OP_IMM = 2
84
+ OP_MEM = 3
85
+ OP_FP_SINGLE = 4
86
+ OP_FP_DOUBLE = 5
87
+ OP_REG_BITS = 6
88
+ OP_REG_PAIR = 7
89
+ OP_BR_DISP = 8
90
+
91
+ OP_BR_DISP_SIZE_INVALID = 0
92
+ OP_BR_DISP_SIZE_BYTE = 1
93
+ OP_BR_DISP_SIZE_WORD = 2
94
+ OP_BR_DISP_SIZE_LONG = 4
95
+
96
+ CPU_SIZE_NONE = 0
97
+ CPU_SIZE_BYTE = 1
98
+ CPU_SIZE_WORD = 2
99
+ CPU_SIZE_LONG = 4
100
+
101
+ FPU_SIZE_NONE = 0
102
+ FPU_SIZE_SINGLE = 4
103
+ FPU_SIZE_DOUBLE = 8
104
+ FPU_SIZE_EXTENDED = 12
105
+
106
+ SIZE_TYPE_INVALID = 0
107
+ SIZE_TYPE_CPU = 1
108
+ SIZE_TYPE_FPU = 2
109
+
110
+ INS_INVALID = 0
111
+ INS_ABCD = 1
112
+ INS_ADD = 2
113
+ INS_ADDA = 3
114
+ INS_ADDI = 4
115
+ INS_ADDQ = 5
116
+ INS_ADDX = 6
117
+ INS_AND = 7
118
+ INS_ANDI = 8
119
+ INS_ASL = 9
120
+ INS_ASR = 10
121
+ INS_BHS = 11
122
+ INS_BLO = 12
123
+ INS_BHI = 13
124
+ INS_BLS = 14
125
+ INS_BCC = 15
126
+ INS_BCS = 16
127
+ INS_BNE = 17
128
+ INS_BEQ = 18
129
+ INS_BVC = 19
130
+ INS_BVS = 20
131
+ INS_BPL = 21
132
+ INS_BMI = 22
133
+ INS_BGE = 23
134
+ INS_BLT = 24
135
+ INS_BGT = 25
136
+ INS_BLE = 26
137
+ INS_BRA = 27
138
+ INS_BSR = 28
139
+ INS_BCHG = 29
140
+ INS_BCLR = 30
141
+ INS_BSET = 31
142
+ INS_BTST = 32
143
+ INS_BFCHG = 33
144
+ INS_BFCLR = 34
145
+ INS_BFEXTS = 35
146
+ INS_BFEXTU = 36
147
+ INS_BFFFO = 37
148
+ INS_BFINS = 38
149
+ INS_BFSET = 39
150
+ INS_BFTST = 40
151
+ INS_BKPT = 41
152
+ INS_CALLM = 42
153
+ INS_CAS = 43
154
+ INS_CAS2 = 44
155
+ INS_CHK = 45
156
+ INS_CHK2 = 46
157
+ INS_CLR = 47
158
+ INS_CMP = 48
159
+ INS_CMPA = 49
160
+ INS_CMPI = 50
161
+ INS_CMPM = 51
162
+ INS_CMP2 = 52
163
+ INS_CINVL = 53
164
+ INS_CINVP = 54
165
+ INS_CINVA = 55
166
+ INS_CPUSHL = 56
167
+ INS_CPUSHP = 57
168
+ INS_CPUSHA = 58
169
+ INS_DBT = 59
170
+ INS_DBF = 60
171
+ INS_DBHI = 61
172
+ INS_DBLS = 62
173
+ INS_DBCC = 63
174
+ INS_DBCS = 64
175
+ INS_DBNE = 65
176
+ INS_DBEQ = 66
177
+ INS_DBVC = 67
178
+ INS_DBVS = 68
179
+ INS_DBPL = 69
180
+ INS_DBMI = 70
181
+ INS_DBGE = 71
182
+ INS_DBLT = 72
183
+ INS_DBGT = 73
184
+ INS_DBLE = 74
185
+ INS_DBRA = 75
186
+ INS_DIVS = 76
187
+ INS_DIVSL = 77
188
+ INS_DIVU = 78
189
+ INS_DIVUL = 79
190
+ INS_EOR = 80
191
+ INS_EORI = 81
192
+ INS_EXG = 82
193
+ INS_EXT = 83
194
+ INS_EXTB = 84
195
+ INS_FABS = 85
196
+ INS_FSABS = 86
197
+ INS_FDABS = 87
198
+ INS_FACOS = 88
199
+ INS_FADD = 89
200
+ INS_FSADD = 90
201
+ INS_FDADD = 91
202
+ INS_FASIN = 92
203
+ INS_FATAN = 93
204
+ INS_FATANH = 94
205
+ INS_FBF = 95
206
+ INS_FBEQ = 96
207
+ INS_FBOGT = 97
208
+ INS_FBOGE = 98
209
+ INS_FBOLT = 99
210
+ INS_FBOLE = 100
211
+ INS_FBOGL = 101
212
+ INS_FBOR = 102
213
+ INS_FBUN = 103
214
+ INS_FBUEQ = 104
215
+ INS_FBUGT = 105
216
+ INS_FBUGE = 106
217
+ INS_FBULT = 107
218
+ INS_FBULE = 108
219
+ INS_FBNE = 109
220
+ INS_FBT = 110
221
+ INS_FBSF = 111
222
+ INS_FBSEQ = 112
223
+ INS_FBGT = 113
224
+ INS_FBGE = 114
225
+ INS_FBLT = 115
226
+ INS_FBLE = 116
227
+ INS_FBGL = 117
228
+ INS_FBGLE = 118
229
+ INS_FBNGLE = 119
230
+ INS_FBNGL = 120
231
+ INS_FBNLE = 121
232
+ INS_FBNLT = 122
233
+ INS_FBNGE = 123
234
+ INS_FBNGT = 124
235
+ INS_FBSNE = 125
236
+ INS_FBST = 126
237
+ INS_FCMP = 127
238
+ INS_FCOS = 128
239
+ INS_FCOSH = 129
240
+ INS_FDBF = 130
241
+ INS_FDBEQ = 131
242
+ INS_FDBOGT = 132
243
+ INS_FDBOGE = 133
244
+ INS_FDBOLT = 134
245
+ INS_FDBOLE = 135
246
+ INS_FDBOGL = 136
247
+ INS_FDBOR = 137
248
+ INS_FDBUN = 138
249
+ INS_FDBUEQ = 139
250
+ INS_FDBUGT = 140
251
+ INS_FDBUGE = 141
252
+ INS_FDBULT = 142
253
+ INS_FDBULE = 143
254
+ INS_FDBNE = 144
255
+ INS_FDBT = 145
256
+ INS_FDBSF = 146
257
+ INS_FDBSEQ = 147
258
+ INS_FDBGT = 148
259
+ INS_FDBGE = 149
260
+ INS_FDBLT = 150
261
+ INS_FDBLE = 151
262
+ INS_FDBGL = 152
263
+ INS_FDBGLE = 153
264
+ INS_FDBNGLE = 154
265
+ INS_FDBNGL = 155
266
+ INS_FDBNLE = 156
267
+ INS_FDBNLT = 157
268
+ INS_FDBNGE = 158
269
+ INS_FDBNGT = 159
270
+ INS_FDBSNE = 160
271
+ INS_FDBST = 161
272
+ INS_FDIV = 162
273
+ INS_FSDIV = 163
274
+ INS_FDDIV = 164
275
+ INS_FETOX = 165
276
+ INS_FETOXM1 = 166
277
+ INS_FGETEXP = 167
278
+ INS_FGETMAN = 168
279
+ INS_FINT = 169
280
+ INS_FINTRZ = 170
281
+ INS_FLOG10 = 171
282
+ INS_FLOG2 = 172
283
+ INS_FLOGN = 173
284
+ INS_FLOGNP1 = 174
285
+ INS_FMOD = 175
286
+ INS_FMOVE = 176
287
+ INS_FSMOVE = 177
288
+ INS_FDMOVE = 178
289
+ INS_FMOVECR = 179
290
+ INS_FMOVEM = 180
291
+ INS_FMUL = 181
292
+ INS_FSMUL = 182
293
+ INS_FDMUL = 183
294
+ INS_FNEG = 184
295
+ INS_FSNEG = 185
296
+ INS_FDNEG = 186
297
+ INS_FNOP = 187
298
+ INS_FREM = 188
299
+ INS_FRESTORE = 189
300
+ INS_FSAVE = 190
301
+ INS_FSCALE = 191
302
+ INS_FSGLDIV = 192
303
+ INS_FSGLMUL = 193
304
+ INS_FSIN = 194
305
+ INS_FSINCOS = 195
306
+ INS_FSINH = 196
307
+ INS_FSQRT = 197
308
+ INS_FSSQRT = 198
309
+ INS_FDSQRT = 199
310
+ INS_FSF = 200
311
+ INS_FSBEQ = 201
312
+ INS_FSOGT = 202
313
+ INS_FSOGE = 203
314
+ INS_FSOLT = 204
315
+ INS_FSOLE = 205
316
+ INS_FSOGL = 206
317
+ INS_FSOR = 207
318
+ INS_FSUN = 208
319
+ INS_FSUEQ = 209
320
+ INS_FSUGT = 210
321
+ INS_FSUGE = 211
322
+ INS_FSULT = 212
323
+ INS_FSULE = 213
324
+ INS_FSNE = 214
325
+ INS_FST = 215
326
+ INS_FSSF = 216
327
+ INS_FSSEQ = 217
328
+ INS_FSGT = 218
329
+ INS_FSGE = 219
330
+ INS_FSLT = 220
331
+ INS_FSLE = 221
332
+ INS_FSGL = 222
333
+ INS_FSGLE = 223
334
+ INS_FSNGLE = 224
335
+ INS_FSNGL = 225
336
+ INS_FSNLE = 226
337
+ INS_FSNLT = 227
338
+ INS_FSNGE = 228
339
+ INS_FSNGT = 229
340
+ INS_FSSNE = 230
341
+ INS_FSST = 231
342
+ INS_FSUB = 232
343
+ INS_FSSUB = 233
344
+ INS_FDSUB = 234
345
+ INS_FTAN = 235
346
+ INS_FTANH = 236
347
+ INS_FTENTOX = 237
348
+ INS_FTRAPF = 238
349
+ INS_FTRAPEQ = 239
350
+ INS_FTRAPOGT = 240
351
+ INS_FTRAPOGE = 241
352
+ INS_FTRAPOLT = 242
353
+ INS_FTRAPOLE = 243
354
+ INS_FTRAPOGL = 244
355
+ INS_FTRAPOR = 245
356
+ INS_FTRAPUN = 246
357
+ INS_FTRAPUEQ = 247
358
+ INS_FTRAPUGT = 248
359
+ INS_FTRAPUGE = 249
360
+ INS_FTRAPULT = 250
361
+ INS_FTRAPULE = 251
362
+ INS_FTRAPNE = 252
363
+ INS_FTRAPT = 253
364
+ INS_FTRAPSF = 254
365
+ INS_FTRAPSEQ = 255
366
+ INS_FTRAPGT = 256
367
+ INS_FTRAPGE = 257
368
+ INS_FTRAPLT = 258
369
+ INS_FTRAPLE = 259
370
+ INS_FTRAPGL = 260
371
+ INS_FTRAPGLE = 261
372
+ INS_FTRAPNGLE = 262
373
+ INS_FTRAPNGL = 263
374
+ INS_FTRAPNLE = 264
375
+ INS_FTRAPNLT = 265
376
+ INS_FTRAPNGE = 266
377
+ INS_FTRAPNGT = 267
378
+ INS_FTRAPSNE = 268
379
+ INS_FTRAPST = 269
380
+ INS_FTST = 270
381
+ INS_FTWOTOX = 271
382
+ INS_HALT = 272
383
+ INS_ILLEGAL = 273
384
+ INS_JMP = 274
385
+ INS_JSR = 275
386
+ INS_LEA = 276
387
+ INS_LINK = 277
388
+ INS_LPSTOP = 278
389
+ INS_LSL = 279
390
+ INS_LSR = 280
391
+ INS_MOVE = 281
392
+ INS_MOVEA = 282
393
+ INS_MOVEC = 283
394
+ INS_MOVEM = 284
395
+ INS_MOVEP = 285
396
+ INS_MOVEQ = 286
397
+ INS_MOVES = 287
398
+ INS_MOVE16 = 288
399
+ INS_MULS = 289
400
+ INS_MULU = 290
401
+ INS_NBCD = 291
402
+ INS_NEG = 292
403
+ INS_NEGX = 293
404
+ INS_NOP = 294
405
+ INS_NOT = 295
406
+ INS_OR = 296
407
+ INS_ORI = 297
408
+ INS_PACK = 298
409
+ INS_PEA = 299
410
+ INS_PFLUSH = 300
411
+ INS_PFLUSHA = 301
412
+ INS_PFLUSHAN = 302
413
+ INS_PFLUSHN = 303
414
+ INS_PLOADR = 304
415
+ INS_PLOADW = 305
416
+ INS_PLPAR = 306
417
+ INS_PLPAW = 307
418
+ INS_PMOVE = 308
419
+ INS_PMOVEFD = 309
420
+ INS_PTESTR = 310
421
+ INS_PTESTW = 311
422
+ INS_PULSE = 312
423
+ INS_REMS = 313
424
+ INS_REMU = 314
425
+ INS_RESET = 315
426
+ INS_ROL = 316
427
+ INS_ROR = 317
428
+ INS_ROXL = 318
429
+ INS_ROXR = 319
430
+ INS_RTD = 320
431
+ INS_RTE = 321
432
+ INS_RTM = 322
433
+ INS_RTR = 323
434
+ INS_RTS = 324
435
+ INS_SBCD = 325
436
+ INS_ST = 326
437
+ INS_SF = 327
438
+ INS_SHI = 328
439
+ INS_SLS = 329
440
+ INS_SCC = 330
441
+ INS_SHS = 331
442
+ INS_SCS = 332
443
+ INS_SLO = 333
444
+ INS_SNE = 334
445
+ INS_SEQ = 335
446
+ INS_SVC = 336
447
+ INS_SVS = 337
448
+ INS_SPL = 338
449
+ INS_SMI = 339
450
+ INS_SGE = 340
451
+ INS_SLT = 341
452
+ INS_SGT = 342
453
+ INS_SLE = 343
454
+ INS_STOP = 344
455
+ INS_SUB = 345
456
+ INS_SUBA = 346
457
+ INS_SUBI = 347
458
+ INS_SUBQ = 348
459
+ INS_SUBX = 349
460
+ INS_SWAP = 350
461
+ INS_TAS = 351
462
+ INS_TRAP = 352
463
+ INS_TRAPV = 353
464
+ INS_TRAPT = 354
465
+ INS_TRAPF = 355
466
+ INS_TRAPHI = 356
467
+ INS_TRAPLS = 357
468
+ INS_TRAPCC = 358
469
+ INS_TRAPHS = 359
470
+ INS_TRAPCS = 360
471
+ INS_TRAPLO = 361
472
+ INS_TRAPNE = 362
473
+ INS_TRAPEQ = 363
474
+ INS_TRAPVC = 364
475
+ INS_TRAPVS = 365
476
+ INS_TRAPPL = 366
477
+ INS_TRAPMI = 367
478
+ INS_TRAPGE = 368
479
+ INS_TRAPLT = 369
480
+ INS_TRAPGT = 370
481
+ INS_TRAPLE = 371
482
+ INS_TST = 372
483
+ INS_UNLK = 373
484
+ INS_UNPK = 374
485
+ INS_ENDING = 375
486
+
487
+ GRP_INVALID = 0
488
+ GRP_JUMP = 1
489
+ GRP_RET = 3
490
+ GRP_IRET = 5
491
+ GRP_BRANCH_RELATIVE = 7
492
+ GRP_ENDING = 8
493
+
494
+ extend Register
495
+ end
496
+ end
@@ -0,0 +1,57 @@
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 'mips_const'
9
+
10
+ module Crabstone
11
+ module MIPS
12
+ class OperandMemory < FFI::Struct
13
+ layout(
14
+ :base, :uint,
15
+ :disp, :long
16
+ )
17
+ end
18
+
19
+ class OperandValue < FFI::Union
20
+ layout(
21
+ :reg, :uint,
22
+ :imm, :long,
23
+ :mem, OperandMemory
24
+ )
25
+ end
26
+
27
+ class Operand < FFI::Struct
28
+ layout(
29
+ :type, :uint,
30
+ :value, OperandValue
31
+ )
32
+
33
+ include Crabstone::Extension::Operand
34
+
35
+ def reg?
36
+ self[:type] == OP_REG
37
+ end
38
+
39
+ def imm?
40
+ self[:type] == OP_IMM
41
+ end
42
+
43
+ def mem?
44
+ self[:type] == OP_MEM
45
+ end
46
+ end
47
+
48
+ class Instruction < FFI::Struct
49
+ layout(
50
+ :op_count, :uint8,
51
+ :operands, [Operand, 10]
52
+ )
53
+
54
+ include Crabstone::Extension::Instruction
55
+ end
56
+ end
57
+ end