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,488 @@
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 TRICORE
9
+ OP_INVALID = Crabstone::OP_INVALID
10
+ OP_REG = Crabstone::OP_REG
11
+ OP_IMM = Crabstone::OP_IMM
12
+ OP_MEM = Crabstone::OP_MEM
13
+
14
+ REG_INVALID = 0
15
+ REG_FCX = 1
16
+ REG_PC = 2
17
+ REG_PCXI = 3
18
+ REG_PSW = 4
19
+ REG_A0 = 5
20
+ REG_A1 = 6
21
+ REG_A2 = 7
22
+ REG_A3 = 8
23
+ REG_A4 = 9
24
+ REG_A5 = 10
25
+ REG_A6 = 11
26
+ REG_A7 = 12
27
+ REG_A8 = 13
28
+ REG_A9 = 14
29
+ REG_A10 = 15
30
+ REG_A11 = 16
31
+ REG_A12 = 17
32
+ REG_A13 = 18
33
+ REG_A14 = 19
34
+ REG_A15 = 20
35
+ REG_D0 = 21
36
+ REG_D1 = 22
37
+ REG_D2 = 23
38
+ REG_D3 = 24
39
+ REG_D4 = 25
40
+ REG_D5 = 26
41
+ REG_D6 = 27
42
+ REG_D7 = 28
43
+ REG_D8 = 29
44
+ REG_D9 = 30
45
+ REG_D10 = 31
46
+ REG_D11 = 32
47
+ REG_D12 = 33
48
+ REG_D13 = 34
49
+ REG_D14 = 35
50
+ REG_D15 = 36
51
+ REG_E0 = 37
52
+ REG_E2 = 38
53
+ REG_E4 = 39
54
+ REG_E6 = 40
55
+ REG_E8 = 41
56
+ REG_E10 = 42
57
+ REG_E12 = 43
58
+ REG_E14 = 44
59
+ REG_P0 = 45
60
+ REG_P2 = 46
61
+ REG_P4 = 47
62
+ REG_P6 = 48
63
+ REG_P8 = 49
64
+ REG_P10 = 50
65
+ REG_P12 = 51
66
+ REG_P14 = 52
67
+ REG_A0_A1 = 53
68
+ REG_A2_A3 = 54
69
+ REG_A4_A5 = 55
70
+ REG_A6_A7 = 56
71
+ REG_A8_A9 = 57
72
+ REG_A10_A11 = 58
73
+ REG_A12_A13 = 59
74
+ REG_A14_A15 = 60
75
+ REG_ENDING = 61
76
+
77
+ INS_INVALID = 0
78
+ INS_XOR_T = 1
79
+ INS_ABSDIFS_B = 2
80
+ INS_ABSDIFS_H = 3
81
+ INS_ABSDIFS = 4
82
+ INS_ABSDIF_B = 5
83
+ INS_ABSDIF_H = 6
84
+ INS_ABSDIF = 7
85
+ INS_ABSS_B = 8
86
+ INS_ABSS_H = 9
87
+ INS_ABSS = 10
88
+ INS_ABS_B = 11
89
+ INS_ABS_H = 12
90
+ INS_ABS = 13
91
+ INS_ADDC = 14
92
+ INS_ADDIH_A = 15
93
+ INS_ADDIH = 16
94
+ INS_ADDI = 17
95
+ INS_ADDSC_AT = 18
96
+ INS_ADDSC_A = 19
97
+ INS_ADDS_BU = 20
98
+ INS_ADDS_B = 21
99
+ INS_ADDS_H = 22
100
+ INS_ADDS_HU = 23
101
+ INS_ADDS_U = 24
102
+ INS_ADDS = 25
103
+ INS_ADDX = 26
104
+ INS_ADD_A = 27
105
+ INS_ADD_B = 28
106
+ INS_ADD_F = 29
107
+ INS_ADD_H = 30
108
+ INS_ADD = 31
109
+ INS_ANDN_T = 32
110
+ INS_ANDN = 33
111
+ INS_AND_ANDN_T = 34
112
+ INS_AND_AND_T = 35
113
+ INS_AND_EQ = 36
114
+ INS_AND_GE_U = 37
115
+ INS_AND_GE = 38
116
+ INS_AND_LT_U = 39
117
+ INS_AND_LT = 40
118
+ INS_AND_NE = 41
119
+ INS_AND_NOR_T = 42
120
+ INS_AND_OR_T = 43
121
+ INS_AND_T = 44
122
+ INS_AND = 45
123
+ INS_BISR = 46
124
+ INS_BMERGE = 47
125
+ INS_BSPLIT = 48
126
+ INS_CACHEA_I = 49
127
+ INS_CACHEA_WI = 50
128
+ INS_CACHEA_W = 51
129
+ INS_CACHEI_I = 52
130
+ INS_CACHEI_WI = 53
131
+ INS_CACHEI_W = 54
132
+ INS_CADDN_A = 55
133
+ INS_CADDN = 56
134
+ INS_CADD_A = 57
135
+ INS_CADD = 58
136
+ INS_CALLA = 59
137
+ INS_CALLI = 60
138
+ INS_CALL = 61
139
+ INS_CLO_B = 62
140
+ INS_CLO_H = 63
141
+ INS_CLO = 64
142
+ INS_CLS_B = 65
143
+ INS_CLS_H = 66
144
+ INS_CLS = 67
145
+ INS_CLZ_B = 68
146
+ INS_CLZ_H = 69
147
+ INS_CLZ = 70
148
+ INS_CMOVN = 71
149
+ INS_CMOV = 72
150
+ INS_CMPSWAP_W = 73
151
+ INS_CMP_F = 74
152
+ INS_CRC32B_W = 75
153
+ INS_CRC32L_W = 76
154
+ INS_CRC32_B = 77
155
+ INS_CRCN = 78
156
+ INS_CSUBN_A = 79
157
+ INS_CSUBN = 80
158
+ INS_CSUB_A = 81
159
+ INS_CSUB = 82
160
+ INS_DEBUG = 83
161
+ INS_DEXTR = 84
162
+ INS_DIFSC_A = 85
163
+ INS_DISABLE = 86
164
+ INS_DIV_F = 87
165
+ INS_DIV_U = 88
166
+ INS_DIV = 89
167
+ INS_DSYNC = 90
168
+ INS_DVADJ = 91
169
+ INS_DVINIT_BU = 92
170
+ INS_DVINIT_B = 93
171
+ INS_DVINIT_HU = 94
172
+ INS_DVINIT_H = 95
173
+ INS_DVINIT_U = 96
174
+ INS_DVINIT = 97
175
+ INS_DVSTEP_U = 98
176
+ INS_DVSTEP = 99
177
+ INS_ENABLE = 100
178
+ INS_EQANY_B = 101
179
+ INS_EQANY_H = 102
180
+ INS_EQZ_A = 103
181
+ INS_EQ_A = 104
182
+ INS_EQ_B = 105
183
+ INS_EQ_H = 106
184
+ INS_EQ_W = 107
185
+ INS_EQ = 108
186
+ INS_EXTR_U = 109
187
+ INS_EXTR = 110
188
+ INS_FCALLA = 111
189
+ INS_FCALLI = 112
190
+ INS_FCALL = 113
191
+ INS_FRET = 114
192
+ INS_FTOHP = 115
193
+ INS_FTOIZ = 116
194
+ INS_FTOI = 117
195
+ INS_FTOQ31Z = 118
196
+ INS_FTOQ31 = 119
197
+ INS_FTOUZ = 120
198
+ INS_FTOU = 121
199
+ INS_GE_A = 122
200
+ INS_GE_U = 123
201
+ INS_GE = 124
202
+ INS_HPTOF = 125
203
+ INS_IMASK = 126
204
+ INS_INSERT = 127
205
+ INS_INSN_T = 128
206
+ INS_INS_T = 129
207
+ INS_ISYNC = 130
208
+ INS_ITOF = 131
209
+ INS_IXMAX_U = 132
210
+ INS_IXMAX = 133
211
+ INS_IXMIN_U = 134
212
+ INS_IXMIN = 135
213
+ INS_JA = 136
214
+ INS_JEQ_A = 137
215
+ INS_JEQ = 138
216
+ INS_JGEZ = 139
217
+ INS_JGE_U = 140
218
+ INS_JGE = 141
219
+ INS_JGTZ = 142
220
+ INS_JI = 143
221
+ INS_JLA = 144
222
+ INS_JLEZ = 145
223
+ INS_JLI = 146
224
+ INS_JLTZ = 147
225
+ INS_JLT_U = 148
226
+ INS_JLT = 149
227
+ INS_JL = 150
228
+ INS_JNED = 151
229
+ INS_JNEI = 152
230
+ INS_JNE_A = 153
231
+ INS_JNE = 154
232
+ INS_JNZ_A = 155
233
+ INS_JNZ_T = 156
234
+ INS_JNZ = 157
235
+ INS_JZ_A = 158
236
+ INS_JZ_T = 159
237
+ INS_JZ = 160
238
+ INS_J = 161
239
+ INS_LDLCX = 162
240
+ INS_LDMST = 163
241
+ INS_LDUCX = 164
242
+ INS_LD_A = 165
243
+ INS_LD_BU = 166
244
+ INS_LD_B = 167
245
+ INS_LD_DA = 168
246
+ INS_LD_D = 169
247
+ INS_LD_HU = 170
248
+ INS_LD_H = 171
249
+ INS_LD_Q = 172
250
+ INS_LD_W = 173
251
+ INS_LEA = 174
252
+ INS_LHA = 175
253
+ INS_LOOPU = 176
254
+ INS_LOOP = 177
255
+ INS_LT_A = 178
256
+ INS_LT_B = 179
257
+ INS_LT_BU = 180
258
+ INS_LT_H = 181
259
+ INS_LT_HU = 182
260
+ INS_LT_U = 183
261
+ INS_LT_W = 184
262
+ INS_LT_WU = 185
263
+ INS_LT = 186
264
+ INS_MADDMS_H = 187
265
+ INS_MADDMS_U = 188
266
+ INS_MADDMS = 189
267
+ INS_MADDM_H = 190
268
+ INS_MADDM_Q = 191
269
+ INS_MADDM_U = 192
270
+ INS_MADDM = 193
271
+ INS_MADDRS_H = 194
272
+ INS_MADDRS_Q = 195
273
+ INS_MADDR_H = 196
274
+ INS_MADDR_Q = 197
275
+ INS_MADDSUMS_H = 198
276
+ INS_MADDSUM_H = 199
277
+ INS_MADDSURS_H = 200
278
+ INS_MADDSUR_H = 201
279
+ INS_MADDSUS_H = 202
280
+ INS_MADDSU_H = 203
281
+ INS_MADDS_H = 204
282
+ INS_MADDS_Q = 205
283
+ INS_MADDS_U = 206
284
+ INS_MADDS = 207
285
+ INS_MADD_F = 208
286
+ INS_MADD_H = 209
287
+ INS_MADD_Q = 210
288
+ INS_MADD_U = 211
289
+ INS_MADD = 212
290
+ INS_MAX_B = 213
291
+ INS_MAX_BU = 214
292
+ INS_MAX_H = 215
293
+ INS_MAX_HU = 216
294
+ INS_MAX_U = 217
295
+ INS_MAX = 218
296
+ INS_MFCR = 219
297
+ INS_MIN_B = 220
298
+ INS_MIN_BU = 221
299
+ INS_MIN_H = 222
300
+ INS_MIN_HU = 223
301
+ INS_MIN_U = 224
302
+ INS_MIN = 225
303
+ INS_MOVH_A = 226
304
+ INS_MOVH = 227
305
+ INS_MOVZ_A = 228
306
+ INS_MOV_AA = 229
307
+ INS_MOV_A = 230
308
+ INS_MOV_D = 231
309
+ INS_MOV_U = 232
310
+ INS_MOV = 233
311
+ INS_MSUBADMS_H = 234
312
+ INS_MSUBADM_H = 235
313
+ INS_MSUBADRS_H = 236
314
+ INS_MSUBADR_H = 237
315
+ INS_MSUBADS_H = 238
316
+ INS_MSUBAD_H = 239
317
+ INS_MSUBMS_H = 240
318
+ INS_MSUBMS_U = 241
319
+ INS_MSUBMS = 242
320
+ INS_MSUBM_H = 243
321
+ INS_MSUBM_Q = 244
322
+ INS_MSUBM_U = 245
323
+ INS_MSUBM = 246
324
+ INS_MSUBRS_H = 247
325
+ INS_MSUBRS_Q = 248
326
+ INS_MSUBR_H = 249
327
+ INS_MSUBR_Q = 250
328
+ INS_MSUBS_H = 251
329
+ INS_MSUBS_Q = 252
330
+ INS_MSUBS_U = 253
331
+ INS_MSUBS = 254
332
+ INS_MSUB_F = 255
333
+ INS_MSUB_H = 256
334
+ INS_MSUB_Q = 257
335
+ INS_MSUB_U = 258
336
+ INS_MSUB = 259
337
+ INS_MTCR = 260
338
+ INS_MULMS_H = 261
339
+ INS_MULM_H = 262
340
+ INS_MULM_U = 263
341
+ INS_MULM = 264
342
+ INS_MULR_H = 265
343
+ INS_MULR_Q = 266
344
+ INS_MULS_U = 267
345
+ INS_MULS = 268
346
+ INS_MUL_F = 269
347
+ INS_MUL_H = 270
348
+ INS_MUL_Q = 271
349
+ INS_MUL_U = 272
350
+ INS_MUL = 273
351
+ INS_NAND_T = 274
352
+ INS_NAND = 275
353
+ INS_NEZ_A = 276
354
+ INS_NE_A = 277
355
+ INS_NE = 278
356
+ INS_NOP = 279
357
+ INS_NOR_T = 280
358
+ INS_NOR = 281
359
+ INS_NOT = 282
360
+ INS_ORN_T = 283
361
+ INS_ORN = 284
362
+ INS_OR_ANDN_T = 285
363
+ INS_OR_AND_T = 286
364
+ INS_OR_EQ = 287
365
+ INS_OR_GE_U = 288
366
+ INS_OR_GE = 289
367
+ INS_OR_LT_U = 290
368
+ INS_OR_LT = 291
369
+ INS_OR_NE = 292
370
+ INS_OR_NOR_T = 293
371
+ INS_OR_OR_T = 294
372
+ INS_OR_T = 295
373
+ INS_OR = 296
374
+ INS_PACK = 297
375
+ INS_PARITY = 298
376
+ INS_POPCNT_W = 299
377
+ INS_Q31TOF = 300
378
+ INS_QSEED_F = 301
379
+ INS_RESTORE = 302
380
+ INS_RET = 303
381
+ INS_RFE = 304
382
+ INS_RFM = 305
383
+ INS_RSLCX = 306
384
+ INS_RSTV = 307
385
+ INS_RSUBS_U = 308
386
+ INS_RSUBS = 309
387
+ INS_RSUB = 310
388
+ INS_SAT_BU = 311
389
+ INS_SAT_B = 312
390
+ INS_SAT_HU = 313
391
+ INS_SAT_H = 314
392
+ INS_SELN_A = 315
393
+ INS_SELN = 316
394
+ INS_SEL_A = 317
395
+ INS_SEL = 318
396
+ INS_SHAS = 319
397
+ INS_SHA_B = 320
398
+ INS_SHA_H = 321
399
+ INS_SHA = 322
400
+ INS_SHUFFLE = 323
401
+ INS_SH_ANDN_T = 324
402
+ INS_SH_AND_T = 325
403
+ INS_SH_B = 326
404
+ INS_SH_EQ = 327
405
+ INS_SH_GE_U = 328
406
+ INS_SH_GE = 329
407
+ INS_SH_H = 330
408
+ INS_SH_LT_U = 331
409
+ INS_SH_LT = 332
410
+ INS_SH_NAND_T = 333
411
+ INS_SH_NE = 334
412
+ INS_SH_NOR_T = 335
413
+ INS_SH_ORN_T = 336
414
+ INS_SH_OR_T = 337
415
+ INS_SH_XNOR_T = 338
416
+ INS_SH_XOR_T = 339
417
+ INS_SH = 340
418
+ INS_STLCX = 341
419
+ INS_STUCX = 342
420
+ INS_ST_A = 343
421
+ INS_ST_B = 344
422
+ INS_ST_DA = 345
423
+ INS_ST_D = 346
424
+ INS_ST_H = 347
425
+ INS_ST_Q = 348
426
+ INS_ST_T = 349
427
+ INS_ST_W = 350
428
+ INS_SUBC = 351
429
+ INS_SUBSC_A = 352
430
+ INS_SUBS_BU = 353
431
+ INS_SUBS_B = 354
432
+ INS_SUBS_HU = 355
433
+ INS_SUBS_H = 356
434
+ INS_SUBS_U = 357
435
+ INS_SUBS = 358
436
+ INS_SUBX = 359
437
+ INS_SUB_A = 360
438
+ INS_SUB_B = 361
439
+ INS_SUB_F = 362
440
+ INS_SUB_H = 363
441
+ INS_SUB = 364
442
+ INS_SVLCX = 365
443
+ INS_SWAPMSK_W = 366
444
+ INS_SWAP_A = 367
445
+ INS_SWAP_W = 368
446
+ INS_SYSCALL = 369
447
+ INS_TLBDEMAP = 370
448
+ INS_TLBFLUSH_A = 371
449
+ INS_TLBFLUSH_B = 372
450
+ INS_TLBMAP = 373
451
+ INS_TLBPROBE_A = 374
452
+ INS_TLBPROBE_I = 375
453
+ INS_TRAPSV = 376
454
+ INS_TRAPV = 377
455
+ INS_UNPACK = 378
456
+ INS_UPDFL = 379
457
+ INS_UTOF = 380
458
+ INS_WAIT = 381
459
+ INS_XNOR_T = 382
460
+ INS_XNOR = 383
461
+ INS_XOR_EQ = 384
462
+ INS_XOR_GE_U = 385
463
+ INS_XOR_GE = 386
464
+ INS_XOR_LT_U = 387
465
+ INS_XOR_LT = 388
466
+ INS_XOR_NE = 389
467
+ INS_XOR = 390
468
+ INS_ENDING = 391
469
+ GRP_INVALID = 392
470
+ GRP_CALL = 393
471
+ GRP_JUMP = 394
472
+ GRP_ENDING = 395
473
+
474
+ FEATURE_INVALID = 0
475
+ FEATURE_HasV110 = 128
476
+ FEATURE_HasV120_UP = 129
477
+ FEATURE_HasV130_UP = 130
478
+ FEATURE_HasV161 = 131
479
+ FEATURE_HasV160_UP = 132
480
+ FEATURE_HasV131_UP = 133
481
+ FEATURE_HasV161_UP = 134
482
+ FEATURE_HasV162 = 135
483
+ FEATURE_HasV162_UP = 136
484
+ FEATURE_ENDING = 137
485
+
486
+ extend Register
487
+ end
488
+ end
@@ -0,0 +1,81 @@
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 'wasm_const'
9
+
10
+ module Crabstone
11
+ module WASM
12
+ class BrTable < FFI::Struct
13
+ layout(
14
+ :length, :uint,
15
+ :address, :ulong,
16
+ :default_target, :uint
17
+ )
18
+ end
19
+
20
+ class OperandValue < FFI::Union
21
+ layout(
22
+ :int7, :int8,
23
+ :varuint32, :uint,
24
+ :varuint64, :ulong,
25
+ :uint32, :uint,
26
+ :uint64, :ulong,
27
+ :immediate, [:uint, 2],
28
+ :brtable, BrTable
29
+ )
30
+ end
31
+
32
+ class Operand < FFI::Struct
33
+ layout(
34
+ :type, :uint,
35
+ :size, :uint,
36
+ :value, OperandValue
37
+ )
38
+
39
+ include Crabstone::Extension::Operand
40
+
41
+ def int7?
42
+ self[:type] == OP_INT7
43
+ end
44
+
45
+ def varuint32?
46
+ self[:type] == OP_VARUINT32
47
+ end
48
+
49
+ def varuint64?
50
+ self[:type] == OP_VARUINT64
51
+ end
52
+
53
+ def uint32?
54
+ [
55
+ OP_VARUINT32,
56
+ OP_UINT32
57
+ ].include?(self[:type])
58
+ end
59
+
60
+ def uint64?
61
+ [
62
+ OP_VARUINT64,
63
+ OP_UINT64
64
+ ].include?(self[:type])
65
+ end
66
+
67
+ def brtable?
68
+ self[:type] == OP_BRTABLE
69
+ end
70
+ end
71
+
72
+ class Instruction < FFI::Struct
73
+ layout(
74
+ :op_count, :uint8,
75
+ :operands, [Operand, 2]
76
+ )
77
+
78
+ include Crabstone::Extension::Instruction
79
+ end
80
+ end
81
+ end