crabstone 4.0.4 → 5.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (54) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGES.md +6 -0
  3. data/README.md +24 -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 +2 -2
  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 +45 -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