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,426 @@
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 M680X
9
+ OPERAND_COUNT = 9
10
+
11
+ REG_INVALID = 0
12
+ REG_A = 1
13
+ REG_B = 2
14
+ REG_E = 3
15
+ REG_F = 4
16
+ REG_0 = 5
17
+ REG_D = 6
18
+ REG_W = 7
19
+ REG_CC = 8
20
+ REG_DP = 9
21
+ REG_MD = 10
22
+ REG_HX = 11
23
+ REG_H = 12
24
+ REG_X = 13
25
+ REG_Y = 14
26
+ REG_S = 15
27
+ REG_U = 16
28
+ REG_V = 17
29
+ REG_Q = 18
30
+ REG_PC = 19
31
+ REG_TMP2 = 20
32
+ REG_TMP3 = 21
33
+ REG_ENDING = 22
34
+
35
+ OP_INVALID = 0
36
+ OP_REGISTER = 1
37
+ OP_IMMEDIATE = 2
38
+ OP_INDEXED = 3
39
+ OP_EXTENDED = 4
40
+ OP_DIRECT = 5
41
+ OP_RELATIVE = 6
42
+ OP_CONSTANT = 7
43
+
44
+ OFFSET_NONE = 0
45
+ OFFSET_BITS_5 = 5
46
+ OFFSET_BITS_8 = 8
47
+ OFFSET_BITS_9 = 9
48
+ OFFSET_BITS_16 = 16
49
+ IDX_INDIRECT = 1
50
+ IDX_NO_COMMA = 2
51
+ IDX_POST_INC_DEC = 4
52
+
53
+ GRP_INVALID = 0
54
+ GRP_JUMP = 1
55
+ GRP_CALL = 2
56
+ GRP_RET = 3
57
+ GRP_INT = 4
58
+ GRP_IRET = 5
59
+ GRP_PRIV = 6
60
+ GRP_BRAREL = 7
61
+ GRP_ENDING = 8
62
+ FIRST_OP_IN_MNEM = 1
63
+ SECOND_OP_IN_MNEM = 2
64
+
65
+ INS_INVLD = 0
66
+ INS_ABA = 1
67
+ INS_ABX = 2
68
+ INS_ABY = 3
69
+ INS_ADC = 4
70
+ INS_ADCA = 5
71
+ INS_ADCB = 6
72
+ INS_ADCD = 7
73
+ INS_ADCR = 8
74
+ INS_ADD = 9
75
+ INS_ADDA = 10
76
+ INS_ADDB = 11
77
+ INS_ADDD = 12
78
+ INS_ADDE = 13
79
+ INS_ADDF = 14
80
+ INS_ADDR = 15
81
+ INS_ADDW = 16
82
+ INS_AIM = 17
83
+ INS_AIS = 18
84
+ INS_AIX = 19
85
+ INS_AND = 20
86
+ INS_ANDA = 21
87
+ INS_ANDB = 22
88
+ INS_ANDCC = 23
89
+ INS_ANDD = 24
90
+ INS_ANDR = 25
91
+ INS_ASL = 26
92
+ INS_ASLA = 27
93
+ INS_ASLB = 28
94
+ INS_ASLD = 29
95
+ INS_ASR = 30
96
+ INS_ASRA = 31
97
+ INS_ASRB = 32
98
+ INS_ASRD = 33
99
+ INS_ASRX = 34
100
+ INS_BAND = 35
101
+ INS_BCC = 36
102
+ INS_BCLR = 37
103
+ INS_BCS = 38
104
+ INS_BEOR = 39
105
+ INS_BEQ = 40
106
+ INS_BGE = 41
107
+ INS_BGND = 42
108
+ INS_BGT = 43
109
+ INS_BHCC = 44
110
+ INS_BHCS = 45
111
+ INS_BHI = 46
112
+ INS_BIAND = 47
113
+ INS_BIEOR = 48
114
+ INS_BIH = 49
115
+ INS_BIL = 50
116
+ INS_BIOR = 51
117
+ INS_BIT = 52
118
+ INS_BITA = 53
119
+ INS_BITB = 54
120
+ INS_BITD = 55
121
+ INS_BITMD = 56
122
+ INS_BLE = 57
123
+ INS_BLS = 58
124
+ INS_BLT = 59
125
+ INS_BMC = 60
126
+ INS_BMI = 61
127
+ INS_BMS = 62
128
+ INS_BNE = 63
129
+ INS_BOR = 64
130
+ INS_BPL = 65
131
+ INS_BRCLR = 66
132
+ INS_BRSET = 67
133
+ INS_BRA = 68
134
+ INS_BRN = 69
135
+ INS_BSET = 70
136
+ INS_BSR = 71
137
+ INS_BVC = 72
138
+ INS_BVS = 73
139
+ INS_CALL = 74
140
+ INS_CBA = 75
141
+ INS_CBEQ = 76
142
+ INS_CBEQA = 77
143
+ INS_CBEQX = 78
144
+ INS_CLC = 79
145
+ INS_CLI = 80
146
+ INS_CLR = 81
147
+ INS_CLRA = 82
148
+ INS_CLRB = 83
149
+ INS_CLRD = 84
150
+ INS_CLRE = 85
151
+ INS_CLRF = 86
152
+ INS_CLRH = 87
153
+ INS_CLRW = 88
154
+ INS_CLRX = 89
155
+ INS_CLV = 90
156
+ INS_CMP = 91
157
+ INS_CMPA = 92
158
+ INS_CMPB = 93
159
+ INS_CMPD = 94
160
+ INS_CMPE = 95
161
+ INS_CMPF = 96
162
+ INS_CMPR = 97
163
+ INS_CMPS = 98
164
+ INS_CMPU = 99
165
+ INS_CMPW = 100
166
+ INS_CMPX = 101
167
+ INS_CMPY = 102
168
+ INS_COM = 103
169
+ INS_COMA = 104
170
+ INS_COMB = 105
171
+ INS_COMD = 106
172
+ INS_COME = 107
173
+ INS_COMF = 108
174
+ INS_COMW = 109
175
+ INS_COMX = 110
176
+ INS_CPD = 111
177
+ INS_CPHX = 112
178
+ INS_CPS = 113
179
+ INS_CPX = 114
180
+ INS_CPY = 115
181
+ INS_CWAI = 116
182
+ INS_DAA = 117
183
+ INS_DBEQ = 118
184
+ INS_DBNE = 119
185
+ INS_DBNZ = 120
186
+ INS_DBNZA = 121
187
+ INS_DBNZX = 122
188
+ INS_DEC = 123
189
+ INS_DECA = 124
190
+ INS_DECB = 125
191
+ INS_DECD = 126
192
+ INS_DECE = 127
193
+ INS_DECF = 128
194
+ INS_DECW = 129
195
+ INS_DECX = 130
196
+ INS_DES = 131
197
+ INS_DEX = 132
198
+ INS_DEY = 133
199
+ INS_DIV = 134
200
+ INS_DIVD = 135
201
+ INS_DIVQ = 136
202
+ INS_EDIV = 137
203
+ INS_EDIVS = 138
204
+ INS_EIM = 139
205
+ INS_EMACS = 140
206
+ INS_EMAXD = 141
207
+ INS_EMAXM = 142
208
+ INS_EMIND = 143
209
+ INS_EMINM = 144
210
+ INS_EMUL = 145
211
+ INS_EMULS = 146
212
+ INS_EOR = 147
213
+ INS_EORA = 148
214
+ INS_EORB = 149
215
+ INS_EORD = 150
216
+ INS_EORR = 151
217
+ INS_ETBL = 152
218
+ INS_EXG = 153
219
+ INS_FDIV = 154
220
+ INS_IBEQ = 155
221
+ INS_IBNE = 156
222
+ INS_IDIV = 157
223
+ INS_IDIVS = 158
224
+ INS_ILLGL = 159
225
+ INS_INC = 160
226
+ INS_INCA = 161
227
+ INS_INCB = 162
228
+ INS_INCD = 163
229
+ INS_INCE = 164
230
+ INS_INCF = 165
231
+ INS_INCW = 166
232
+ INS_INCX = 167
233
+ INS_INS = 168
234
+ INS_INX = 169
235
+ INS_INY = 170
236
+ INS_JMP = 171
237
+ INS_JSR = 172
238
+ INS_LBCC = 173
239
+ INS_LBCS = 174
240
+ INS_LBEQ = 175
241
+ INS_LBGE = 176
242
+ INS_LBGT = 177
243
+ INS_LBHI = 178
244
+ INS_LBLE = 179
245
+ INS_LBLS = 180
246
+ INS_LBLT = 181
247
+ INS_LBMI = 182
248
+ INS_LBNE = 183
249
+ INS_LBPL = 184
250
+ INS_LBRA = 185
251
+ INS_LBRN = 186
252
+ INS_LBSR = 187
253
+ INS_LBVC = 188
254
+ INS_LBVS = 189
255
+ INS_LDA = 190
256
+ INS_LDAA = 191
257
+ INS_LDAB = 192
258
+ INS_LDB = 193
259
+ INS_LDBT = 194
260
+ INS_LDD = 195
261
+ INS_LDE = 196
262
+ INS_LDF = 197
263
+ INS_LDHX = 198
264
+ INS_LDMD = 199
265
+ INS_LDQ = 200
266
+ INS_LDS = 201
267
+ INS_LDU = 202
268
+ INS_LDW = 203
269
+ INS_LDX = 204
270
+ INS_LDY = 205
271
+ INS_LEAS = 206
272
+ INS_LEAU = 207
273
+ INS_LEAX = 208
274
+ INS_LEAY = 209
275
+ INS_LSL = 210
276
+ INS_LSLA = 211
277
+ INS_LSLB = 212
278
+ INS_LSLD = 213
279
+ INS_LSLX = 214
280
+ INS_LSR = 215
281
+ INS_LSRA = 216
282
+ INS_LSRB = 217
283
+ INS_LSRD = 218
284
+ INS_LSRW = 219
285
+ INS_LSRX = 220
286
+ INS_MAXA = 221
287
+ INS_MAXM = 222
288
+ INS_MEM = 223
289
+ INS_MINA = 224
290
+ INS_MINM = 225
291
+ INS_MOV = 226
292
+ INS_MOVB = 227
293
+ INS_MOVW = 228
294
+ INS_MUL = 229
295
+ INS_MULD = 230
296
+ INS_NEG = 231
297
+ INS_NEGA = 232
298
+ INS_NEGB = 233
299
+ INS_NEGD = 234
300
+ INS_NEGX = 235
301
+ INS_NOP = 236
302
+ INS_NSA = 237
303
+ INS_OIM = 238
304
+ INS_ORA = 239
305
+ INS_ORAA = 240
306
+ INS_ORAB = 241
307
+ INS_ORB = 242
308
+ INS_ORCC = 243
309
+ INS_ORD = 244
310
+ INS_ORR = 245
311
+ INS_PSHA = 246
312
+ INS_PSHB = 247
313
+ INS_PSHC = 248
314
+ INS_PSHD = 249
315
+ INS_PSHH = 250
316
+ INS_PSHS = 251
317
+ INS_PSHSW = 252
318
+ INS_PSHU = 253
319
+ INS_PSHUW = 254
320
+ INS_PSHX = 255
321
+ INS_PSHY = 256
322
+ INS_PULA = 257
323
+ INS_PULB = 258
324
+ INS_PULC = 259
325
+ INS_PULD = 260
326
+ INS_PULH = 261
327
+ INS_PULS = 262
328
+ INS_PULSW = 263
329
+ INS_PULU = 264
330
+ INS_PULUW = 265
331
+ INS_PULX = 266
332
+ INS_PULY = 267
333
+ INS_REV = 268
334
+ INS_REVW = 269
335
+ INS_ROL = 270
336
+ INS_ROLA = 271
337
+ INS_ROLB = 272
338
+ INS_ROLD = 273
339
+ INS_ROLW = 274
340
+ INS_ROLX = 275
341
+ INS_ROR = 276
342
+ INS_RORA = 277
343
+ INS_RORB = 278
344
+ INS_RORD = 279
345
+ INS_RORW = 280
346
+ INS_RORX = 281
347
+ INS_RSP = 282
348
+ INS_RTC = 283
349
+ INS_RTI = 284
350
+ INS_RTS = 285
351
+ INS_SBA = 286
352
+ INS_SBC = 287
353
+ INS_SBCA = 288
354
+ INS_SBCB = 289
355
+ INS_SBCD = 290
356
+ INS_SBCR = 291
357
+ INS_SEC = 292
358
+ INS_SEI = 293
359
+ INS_SEV = 294
360
+ INS_SEX = 295
361
+ INS_SEXW = 296
362
+ INS_SLP = 297
363
+ INS_STA = 298
364
+ INS_STAA = 299
365
+ INS_STAB = 300
366
+ INS_STB = 301
367
+ INS_STBT = 302
368
+ INS_STD = 303
369
+ INS_STE = 304
370
+ INS_STF = 305
371
+ INS_STOP = 306
372
+ INS_STHX = 307
373
+ INS_STQ = 308
374
+ INS_STS = 309
375
+ INS_STU = 310
376
+ INS_STW = 311
377
+ INS_STX = 312
378
+ INS_STY = 313
379
+ INS_SUB = 314
380
+ INS_SUBA = 315
381
+ INS_SUBB = 316
382
+ INS_SUBD = 317
383
+ INS_SUBE = 318
384
+ INS_SUBF = 319
385
+ INS_SUBR = 320
386
+ INS_SUBW = 321
387
+ INS_SWI = 322
388
+ INS_SWI2 = 323
389
+ INS_SWI3 = 324
390
+ INS_SYNC = 325
391
+ INS_TAB = 326
392
+ INS_TAP = 327
393
+ INS_TAX = 328
394
+ INS_TBA = 329
395
+ INS_TBEQ = 330
396
+ INS_TBL = 331
397
+ INS_TBNE = 332
398
+ INS_TEST = 333
399
+ INS_TFM = 334
400
+ INS_TFR = 335
401
+ INS_TIM = 336
402
+ INS_TPA = 337
403
+ INS_TST = 338
404
+ INS_TSTA = 339
405
+ INS_TSTB = 340
406
+ INS_TSTD = 341
407
+ INS_TSTE = 342
408
+ INS_TSTF = 343
409
+ INS_TSTW = 344
410
+ INS_TSTX = 345
411
+ INS_TSX = 346
412
+ INS_TSY = 347
413
+ INS_TXA = 348
414
+ INS_TXS = 349
415
+ INS_TYS = 350
416
+ INS_WAI = 351
417
+ INS_WAIT = 352
418
+ INS_WAV = 353
419
+ INS_WAVR = 354
420
+ INS_XGDX = 355
421
+ INS_XGDY = 356
422
+ INS_ENDING = 357
423
+
424
+ extend Register
425
+ end
426
+ end
@@ -0,0 +1,129 @@
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 'm68k_const'
9
+
10
+ module Crabstone
11
+ module M68K
12
+ class OperandRegPair < FFI::Struct
13
+ layout(
14
+ :reg_0, :uint,
15
+ :reg_1, :uint
16
+ )
17
+ end
18
+
19
+ class OperandValue < FFI::Union
20
+ layout(
21
+ :imm, :long,
22
+ :dimm, :double,
23
+ :simm, :float,
24
+ :reg, :uint,
25
+ :reg_pair, OperandRegPair
26
+ )
27
+ end
28
+
29
+ class OperandMemory < FFI::Struct
30
+ layout(
31
+ :base_reg, :uint,
32
+ :index_reg, :uint,
33
+ :in_base_reg, :uint,
34
+ :in_disp, :uint,
35
+ :out_disp, :uint,
36
+ :disp, :short,
37
+ :scale, :uint8,
38
+ :bitfield, :uint8,
39
+ :width, :uint8,
40
+ :offset, :uint8,
41
+ :index_size, :uint8
42
+ )
43
+ end
44
+
45
+ class OperandBrDisp < FFI::Struct
46
+ layout(
47
+ :disp, :int,
48
+ :disp_size, :uint8
49
+ )
50
+ end
51
+
52
+ class Operand < FFI::Struct
53
+ layout(
54
+ :value, OperandValue,
55
+ :mem, OperandMemory,
56
+ :br_disp, OperandBrDisp,
57
+ :register_bits, :uint,
58
+ :type, :uint,
59
+ :address_mode, :uint
60
+ )
61
+
62
+ include Crabstone::Extension::Operand
63
+
64
+ # Use Extension::Operand#value first
65
+ alias super_value value
66
+
67
+ def value
68
+ super_value || if mem?
69
+ self[:mem]
70
+ elsif br_disp?
71
+ self[:br_disp]
72
+ elsif reg_bits?
73
+ self[:register_bits]
74
+ end
75
+ end
76
+
77
+ def reg?
78
+ self[:type] == OP_REG
79
+ end
80
+
81
+ def imm?
82
+ self[:type] == OP_IMM
83
+ end
84
+
85
+ def mem?
86
+ self[:type] == OP_MEM
87
+ end
88
+
89
+ def fp_single?
90
+ self[:type] == OP_FP_SINGLE
91
+ end
92
+ alias simm? fp_single?
93
+
94
+ def fp_double?
95
+ self[:type] == OP_FP_DOUBLE
96
+ end
97
+ alias dimm? fp_double?
98
+
99
+ def reg_bits?
100
+ self[:type] == OP_REG_BITS
101
+ end
102
+
103
+ def reg_pair?
104
+ self[:type] == OP_REG_PAIR
105
+ end
106
+
107
+ def br_disp?
108
+ self[:type] == OP_BR_DISP
109
+ end
110
+ end
111
+
112
+ class OperandSize < FFI::Struct
113
+ layout(
114
+ :type, :uint,
115
+ :size, :uint
116
+ )
117
+ end
118
+
119
+ class Instruction < FFI::Struct
120
+ layout(
121
+ :operands, [Operand, 4],
122
+ :op_size, OperandSize,
123
+ :op_count, :uint8
124
+ )
125
+
126
+ include Crabstone::Extension::Instruction
127
+ end
128
+ end
129
+ end