Seregon/Hermes

Hermes/Dyforge is a program written in c++ allows you to inject a dll that can analyze all processes in a program, can be used for mod and reverse engeneering

C/3.8 KB/No license
DyMain/include/capstone/m68k.h
Hermes / DyMain / include / capstone / m68k.h
1#ifndef CAPSTONE_M68K_H
2#define CAPSTONE_M68K_H
3 
4/* Capstone Disassembly Engine */
5/* By Daniel Collin <daniel@collin.com>, 2015-2016 */
6 
7#ifdef __cplusplus
8extern "C" {
9#endif
10 
11#include "platform.h"
12#include "cs_operand.h"
13 
14#ifdef _MSC_VER
15#pragma warning(disable:4201)
16#endif
17 
18#define M68K_OPERAND_COUNT 4
19 
20/// M68K registers and special registers
21typedef enum m68k_reg {
22 M68K_REG_INVALID = 0,
23 
24 M68K_REG_D0,
25 M68K_REG_D1,
26 M68K_REG_D2,
27 M68K_REG_D3,
28 M68K_REG_D4,
29 M68K_REG_D5,
30 M68K_REG_D6,
31 M68K_REG_D7,
32 
33 M68K_REG_A0,
34 M68K_REG_A1,
35 M68K_REG_A2,
36 M68K_REG_A3,
37 M68K_REG_A4,
38 M68K_REG_A5,
39 M68K_REG_A6,
40 M68K_REG_A7,
41 
42 M68K_REG_FP0,
43 M68K_REG_FP1,
44 M68K_REG_FP2,
45 M68K_REG_FP3,
46 M68K_REG_FP4,
47 M68K_REG_FP5,
48 M68K_REG_FP6,
49 M68K_REG_FP7,
50 
51 M68K_REG_PC,
52 
53 M68K_REG_SR,
54 M68K_REG_CCR,
55 M68K_REG_SFC,
56 M68K_REG_DFC,
57 M68K_REG_USP,
58 M68K_REG_VBR,
59 M68K_REG_CACR,
60 M68K_REG_CAAR,
61 M68K_REG_MSP,
62 M68K_REG_ISP,
63 M68K_REG_TC,
64 M68K_REG_ITT0,
65 M68K_REG_ITT1,
66 M68K_REG_DTT0,
67 M68K_REG_DTT1,
68 M68K_REG_MMUSR,
69 M68K_REG_URP,
70 M68K_REG_SRP,
71 
72 M68K_REG_FPCR,
73 M68K_REG_FPSR,
74 M68K_REG_FPIAR,
75 
76 M68K_REG_ENDING, // <-- mark the end of the list of registers
77} m68k_reg;
78 
79/// M68K Addressing Modes
80typedef enum m68k_address_mode {
81 M68K_AM_NONE = 0, ///< No address mode.
82 
83 M68K_AM_REG_DIRECT_DATA, ///< Register Direct - Data
84 M68K_AM_REG_DIRECT_ADDR, ///< Register Direct - Address
85 
86 M68K_AM_REGI_ADDR, ///< Register Indirect - Address
87 M68K_AM_REGI_ADDR_POST_INC, ///< Register Indirect - Address with Postincrement
88 M68K_AM_REGI_ADDR_PRE_DEC, ///< Register Indirect - Address with Predecrement
89 M68K_AM_REGI_ADDR_DISP, ///< Register Indirect - Address with Displacement
90 
91 M68K_AM_AREGI_INDEX_8_BIT_DISP, ///< Address Register Indirect With Index- 8-bit displacement
92 M68K_AM_AREGI_INDEX_BASE_DISP, ///< Address Register Indirect With Index- Base displacement
93 
94 M68K_AM_MEMI_POST_INDEX, ///< Memory indirect - Postindex
95 M68K_AM_MEMI_PRE_INDEX, ///< Memory indirect - Preindex
96 
97 M68K_AM_PCI_DISP, ///< Program Counter Indirect - with Displacement
98 
99 M68K_AM_PCI_INDEX_8_BIT_DISP, ///< Program Counter Indirect with Index - with 8-Bit Displacement
100 M68K_AM_PCI_INDEX_BASE_DISP, ///< Program Counter Indirect with Index - with Base Displacement
101 
102 M68K_AM_PC_MEMI_POST_INDEX, ///< Program Counter Memory Indirect - Postindexed
103 M68K_AM_PC_MEMI_PRE_INDEX, ///< Program Counter Memory Indirect - Preindexed
104 
105 M68K_AM_ABSOLUTE_DATA_SHORT, ///< Absolute Data Addressing - Short
106 M68K_AM_ABSOLUTE_DATA_LONG, ///< Absolute Data Addressing - Long
107 M68K_AM_IMMEDIATE, ///< Immediate value
108 
109 M68K_AM_BRANCH_DISPLACEMENT, ///< Address as displacement from (PC+2) used by branches
110} m68k_address_mode;
111 
112/// Operand type for instruction's operands
113typedef enum m68k_op_type {
114 M68K_OP_INVALID = CS_OP_INVALID, ///< = CS_OP_INVALID (Uninitialized).
115 M68K_OP_REG = CS_OP_REG, ///< = CS_OP_REG (Register operand).
116 M68K_OP_IMM = CS_OP_IMM, ///< = CS_OP_IMM (Immediate operand).
117 M68K_OP_FP_SINGLE = CS_OP_SPECIAL + 0, ///< single precision Floating-Point operand
118 M68K_OP_FP_DOUBLE = CS_OP_SPECIAL + 1, ///< double precision Floating-Point operand
119 M68K_OP_REG_BITS = CS_OP_SPECIAL + 2, ///< Register bits move
120 M68K_OP_REG_PAIR = CS_OP_SPECIAL + 3, ///< Register pair in the same op (upper 4 bits for first reg, lower for second)
121 M68K_OP_BR_DISP = CS_OP_SPECIAL + 4, ///< Branch displacement
122 M68K_OP_MEM = CS_OP_MEM, ///< = CS_OP_MEM (Memory operand).
123} m68k_op_type;
124 
125/// Instruction's operand referring to memory
126/// This is associated with M68K_OP_MEM operand type above
127typedef struct m68k_op_mem {
128 m68k_reg base_reg; ///< base register (or M68K_REG_INVALID if irrelevant)
129 m68k_reg index_reg; ///< index register (or M68K_REG_INVALID if irrelevant)
130 m68k_reg in_base_reg; ///< indirect base register (or M68K_REG_INVALID if irrelevant)
131 uint32_t in_disp; ///< indirect displacement
132 uint32_t out_disp; ///< other displacement
133 int16_t disp; ///< displacement value
134 uint8_t scale; ///< scale for index register
135 uint8_t bitfield; ///< set to true if the two values below should be used
136 uint8_t width; ///< used for bf* instructions
137 uint8_t offset; ///< used for bf* instructions
138 uint8_t index_size; ///< 0 = w, 1 = l
139} m68k_op_mem;
140 
141/// Operand type for instruction's operands
142typedef enum m68k_op_br_disp_size {
143 M68K_OP_BR_DISP_SIZE_INVALID = 0, ///< = CS_OP_INVALID (Uninitialized).
144 M68K_OP_BR_DISP_SIZE_BYTE = 1, ///< signed 8-bit displacement
145 M68K_OP_BR_DISP_SIZE_WORD = 2, ///< signed 16-bit displacement
146 M68K_OP_BR_DISP_SIZE_LONG = 4, ///< signed 32-bit displacement
147} m68k_op_br_disp_size;
148 
149typedef struct m68k_op_br_disp {
150 int32_t disp; ///< displacement value
151 uint8_t disp_size; ///< Size from m68k_op_br_disp_size type above
152} m68k_op_br_disp;
153 
154/// Register pair in one operand.
155typedef struct cs_m68k_op_reg_pair {
156 m68k_reg reg_0;
157 m68k_reg reg_1;
158} cs_m68k_op_reg_pair;
159 
160/// Instruction operand
161typedef struct cs_m68k_op {
162 union {
163 uint64_t imm; ///< immediate value for IMM operand
164 double dimm; ///< double imm
165 float simm; ///< float imm
166 m68k_reg reg; ///< register value for REG operand
167 cs_m68k_op_reg_pair reg_pair; ///< register pair in one operand
168 };
169 
170 m68k_op_mem mem; ///< data when operand is targeting memory
171 m68k_op_br_disp br_disp; ///< data when operand is a branch displacement
172 uint32_t register_bits; ///< register bits for movem etc. (always in d0-d7, a0-a7, fp0 - fp7 order)
173 m68k_op_type type;
174 m68k_address_mode address_mode; ///< M68K addressing mode for this op
175} cs_m68k_op;
176 
177/// Operation size of the CPU instructions
178typedef enum m68k_cpu_size {
179 M68K_CPU_SIZE_NONE = 0, ///< unsized or unspecified
180 M68K_CPU_SIZE_BYTE = 1, ///< 1 byte in size
181 M68K_CPU_SIZE_WORD = 2, ///< 2 bytes in size
182 M68K_CPU_SIZE_LONG = 4, ///< 4 bytes in size
183} m68k_cpu_size;
184 
185/// Operation size of the FPU instructions (Notice that FPU instruction can also use CPU sizes if needed)
186typedef enum m68k_fpu_size {
187 M68K_FPU_SIZE_NONE = 0, ///< unsized like fsave/frestore
188 M68K_FPU_SIZE_SINGLE = 4, ///< 4 byte in size (single float)
189 M68K_FPU_SIZE_DOUBLE = 8, ///< 8 byte in size (double)
190 M68K_FPU_SIZE_EXTENDED = 12, ///< 12 byte in size (extended real format)
191} m68k_fpu_size;
192 
193/// Type of size that is being used for the current instruction
194typedef enum m68k_size_type {
195 M68K_SIZE_TYPE_INVALID = 0,
196 
197 M68K_SIZE_TYPE_CPU,
198 M68K_SIZE_TYPE_FPU,
199} m68k_size_type;
200 
201/// Operation size of the current instruction (NOT the actually size of instruction)
202typedef struct m68k_op_size {
203 m68k_size_type type;
204 union {
205 m68k_cpu_size cpu_size;
206 m68k_fpu_size fpu_size;
207 };
208} m68k_op_size;
209 
210/// The M68K instruction and its operands
211typedef struct cs_m68k {
212 // Number of operands of this instruction or 0 when instruction has no operand.
213 cs_m68k_op operands[M68K_OPERAND_COUNT]; ///< operands for this instruction.
214 m68k_op_size op_size; ///< size of data operand works on in bytes (.b, .w, .l, etc)
215 uint8_t op_count; ///< number of operands for the instruction
216} cs_m68k;
217 
218/// M68K instruction
219typedef enum m68k_insn {
220 M68K_INS_INVALID = 0,
221 
222 M68K_INS_ABCD,
223 M68K_INS_ADD,
224 M68K_INS_ADDA,
225 M68K_INS_ADDI,
226 M68K_INS_ADDQ,
227 M68K_INS_ADDX,
228 M68K_INS_AND,
229 M68K_INS_ANDI,
230 M68K_INS_ASL,
231 M68K_INS_ASR,
232 M68K_INS_BHS,
233 M68K_INS_BLO,
234 M68K_INS_BHI,
235 M68K_INS_BLS,
236 M68K_INS_BCC,
237 M68K_INS_BCS,
238 M68K_INS_BNE,
239 M68K_INS_BEQ,
240 M68K_INS_BVC,
241 M68K_INS_BVS,
242 M68K_INS_BPL,
243 M68K_INS_BMI,
244 M68K_INS_BGE,
245 M68K_INS_BLT,
246 M68K_INS_BGT,
247 M68K_INS_BLE,
248 M68K_INS_BRA,
249 M68K_INS_BSR,
250 M68K_INS_BCHG,
251 M68K_INS_BCLR,
252 M68K_INS_BSET,
253 M68K_INS_BTST,
254 M68K_INS_BFCHG,
255 M68K_INS_BFCLR,
256 M68K_INS_BFEXTS,
257 M68K_INS_BFEXTU,
258 M68K_INS_BFFFO,
259 M68K_INS_BFINS,
260 M68K_INS_BFSET,
261 M68K_INS_BFTST,
262 M68K_INS_BKPT,
263 M68K_INS_CALLM,
264 M68K_INS_CAS,
265 M68K_INS_CAS2,
266 M68K_INS_CHK,
267 M68K_INS_CHK2,
268 M68K_INS_CLR,
269 M68K_INS_CMP,
270 M68K_INS_CMPA,
271 M68K_INS_CMPI,
272 M68K_INS_CMPM,
273 M68K_INS_CMP2,
274 M68K_INS_CINVL,
275 M68K_INS_CINVP,
276 M68K_INS_CINVA,
277 M68K_INS_CPUSHL,
278 M68K_INS_CPUSHP,
279 M68K_INS_CPUSHA,
280 M68K_INS_DBT,
281 M68K_INS_DBF,
282 M68K_INS_DBHI,
283 M68K_INS_DBLS,
284 M68K_INS_DBCC,
285 M68K_INS_DBCS,
286 M68K_INS_DBNE,
287 M68K_INS_DBEQ,
288 M68K_INS_DBVC,
289 M68K_INS_DBVS,
290 M68K_INS_DBPL,
291 M68K_INS_DBMI,
292 M68K_INS_DBGE,
293 M68K_INS_DBLT,
294 M68K_INS_DBGT,
295 M68K_INS_DBLE,
296 M68K_INS_DBRA,
297 M68K_INS_DIVS,
298 M68K_INS_DIVSL,
299 M68K_INS_DIVU,
300 M68K_INS_DIVUL,
301 M68K_INS_EOR,
302 M68K_INS_EORI,
303 M68K_INS_EXG,
304 M68K_INS_EXT,
305 M68K_INS_EXTB,
306 M68K_INS_FABS,
307 M68K_INS_FSABS,
308 M68K_INS_FDABS,
309 M68K_INS_FACOS,
310 M68K_INS_FADD,
311 M68K_INS_FSADD,
312 M68K_INS_FDADD,
313 M68K_INS_FASIN,
314 M68K_INS_FATAN,
315 M68K_INS_FATANH,
316 M68K_INS_FBF,
317 M68K_INS_FBEQ,
318 M68K_INS_FBOGT,
319 M68K_INS_FBOGE,
320 M68K_INS_FBOLT,
321 M68K_INS_FBOLE,
322 M68K_INS_FBOGL,
323 M68K_INS_FBOR,
324 M68K_INS_FBUN,
325 M68K_INS_FBUEQ,
326 M68K_INS_FBUGT,
327 M68K_INS_FBUGE,
328 M68K_INS_FBULT,
329 M68K_INS_FBULE,
330 M68K_INS_FBNE,
331 M68K_INS_FBT,
332 M68K_INS_FBSF,
333 M68K_INS_FBSEQ,
334 M68K_INS_FBGT,
335 M68K_INS_FBGE,
336 M68K_INS_FBLT,
337 M68K_INS_FBLE,
338 M68K_INS_FBGL,
339 M68K_INS_FBGLE,
340 M68K_INS_FBNGLE,
341 M68K_INS_FBNGL,
342 M68K_INS_FBNLE,
343 M68K_INS_FBNLT,
344 M68K_INS_FBNGE,
345 M68K_INS_FBNGT,
346 M68K_INS_FBSNE,
347 M68K_INS_FBST,
348 M68K_INS_FCMP,
349 M68K_INS_FCOS,
350 M68K_INS_FCOSH,
351 M68K_INS_FDBF,
352 M68K_INS_FDBEQ,
353 M68K_INS_FDBOGT,
354 M68K_INS_FDBOGE,
355 M68K_INS_FDBOLT,
356 M68K_INS_FDBOLE,
357 M68K_INS_FDBOGL,
358 M68K_INS_FDBOR,
359 M68K_INS_FDBUN,
360 M68K_INS_FDBUEQ,
361 M68K_INS_FDBUGT,
362 M68K_INS_FDBUGE,
363 M68K_INS_FDBULT,
364 M68K_INS_FDBULE,
365 M68K_INS_FDBNE,
366 M68K_INS_FDBT,
367 M68K_INS_FDBSF,
368 M68K_INS_FDBSEQ,
369 M68K_INS_FDBGT,
370 M68K_INS_FDBGE,
371 M68K_INS_FDBLT,
372 M68K_INS_FDBLE,
373 M68K_INS_FDBGL,
374 M68K_INS_FDBGLE,
375 M68K_INS_FDBNGLE,
376 M68K_INS_FDBNGL,
377 M68K_INS_FDBNLE,
378 M68K_INS_FDBNLT,
379 M68K_INS_FDBNGE,
380 M68K_INS_FDBNGT,
381 M68K_INS_FDBSNE,
382 M68K_INS_FDBST,
383 M68K_INS_FDIV,
384 M68K_INS_FSDIV,
385 M68K_INS_FDDIV,
386 M68K_INS_FETOX,
387 M68K_INS_FETOXM1,
388 M68K_INS_FGETEXP,
389 M68K_INS_FGETMAN,
390 M68K_INS_FINT,
391 M68K_INS_FINTRZ,
392 M68K_INS_FLOG10,
393 M68K_INS_FLOG2,
394 M68K_INS_FLOGN,
395 M68K_INS_FLOGNP1,
396 M68K_INS_FMOD,
397 M68K_INS_FMOVE,
398 M68K_INS_FSMOVE,
399 M68K_INS_FDMOVE,
400 M68K_INS_FMOVECR,
401 M68K_INS_FMOVEM,
402 M68K_INS_FMUL,
403 M68K_INS_FSMUL,
404 M68K_INS_FDMUL,
405 M68K_INS_FNEG,
406 M68K_INS_FSNEG,
407 M68K_INS_FDNEG,
408 M68K_INS_FNOP,
409 M68K_INS_FREM,
410 M68K_INS_FRESTORE,
411 M68K_INS_FSAVE,
412 M68K_INS_FSCALE,
413 M68K_INS_FSGLDIV,
414 M68K_INS_FSGLMUL,
415 M68K_INS_FSIN,
416 M68K_INS_FSINCOS,
417 M68K_INS_FSINH,
418 M68K_INS_FSQRT,
419 M68K_INS_FSSQRT,
420 M68K_INS_FDSQRT,
421 M68K_INS_FSF,
422 M68K_INS_FSBEQ,
423 M68K_INS_FSOGT,
424 M68K_INS_FSOGE,
425 M68K_INS_FSOLT,
426 M68K_INS_FSOLE,
427 M68K_INS_FSOGL,
428 M68K_INS_FSOR,
429 M68K_INS_FSUN,
430 M68K_INS_FSUEQ,
431 M68K_INS_FSUGT,
432 M68K_INS_FSUGE,
433 M68K_INS_FSULT,
434 M68K_INS_FSULE,
435 M68K_INS_FSNE,
436 M68K_INS_FST,
437 M68K_INS_FSSF,
438 M68K_INS_FSSEQ,
439 M68K_INS_FSGT,
440 M68K_INS_FSGE,
441 M68K_INS_FSLT,
442 M68K_INS_FSLE,
443 M68K_INS_FSGL,
444 M68K_INS_FSGLE,
445 M68K_INS_FSNGLE,
446 M68K_INS_FSNGL,
447 M68K_INS_FSNLE,
448 M68K_INS_FSNLT,
449 M68K_INS_FSNGE,
450 M68K_INS_FSNGT,
451 M68K_INS_FSSNE,
452 M68K_INS_FSST,
453 M68K_INS_FSUB,
454 M68K_INS_FSSUB,
455 M68K_INS_FDSUB,
456 M68K_INS_FTAN,
457 M68K_INS_FTANH,
458 M68K_INS_FTENTOX,
459 M68K_INS_FTRAPF,
460 M68K_INS_FTRAPEQ,
461 M68K_INS_FTRAPOGT,
462 M68K_INS_FTRAPOGE,
463 M68K_INS_FTRAPOLT,
464 M68K_INS_FTRAPOLE,
465 M68K_INS_FTRAPOGL,
466 M68K_INS_FTRAPOR,
467 M68K_INS_FTRAPUN,
468 M68K_INS_FTRAPUEQ,
469 M68K_INS_FTRAPUGT,
470 M68K_INS_FTRAPUGE,
471 M68K_INS_FTRAPULT,
472 M68K_INS_FTRAPULE,
473 M68K_INS_FTRAPNE,
474 M68K_INS_FTRAPT,
475 M68K_INS_FTRAPSF,
476 M68K_INS_FTRAPSEQ,
477 M68K_INS_FTRAPGT,
478 M68K_INS_FTRAPGE,
479 M68K_INS_FTRAPLT,
480 M68K_INS_FTRAPLE,
481 M68K_INS_FTRAPGL,
482 M68K_INS_FTRAPGLE,
483 M68K_INS_FTRAPNGLE,
484 M68K_INS_FTRAPNGL,
485 M68K_INS_FTRAPNLE,
486 M68K_INS_FTRAPNLT,
487 M68K_INS_FTRAPNGE,
488 M68K_INS_FTRAPNGT,
489 M68K_INS_FTRAPSNE,
490 M68K_INS_FTRAPST,
491 M68K_INS_FTST,
492 M68K_INS_FTWOTOX,
493 M68K_INS_HALT,
494 M68K_INS_ILLEGAL,
495 M68K_INS_JMP,
496 M68K_INS_JSR,
497 M68K_INS_LEA,
498 M68K_INS_LINK,
499 M68K_INS_LPSTOP,
500 M68K_INS_LSL,
501 M68K_INS_LSR,
502 M68K_INS_MOVE,
503 M68K_INS_MOVEA,
504 M68K_INS_MOVEC,
505 M68K_INS_MOVEM,
506 M68K_INS_MOVEP,
507 M68K_INS_MOVEQ,
508 M68K_INS_MOVES,
509 M68K_INS_MOVE16,
510 M68K_INS_MULS,
511 M68K_INS_MULU,
512 M68K_INS_NBCD,
513 M68K_INS_NEG,
514 M68K_INS_NEGX,
515 M68K_INS_NOP,
516 M68K_INS_NOT,
517 M68K_INS_OR,
518 M68K_INS_ORI,
519 M68K_INS_PACK,
520 M68K_INS_PEA,
521 M68K_INS_PFLUSH,
522 M68K_INS_PFLUSHA,
523 M68K_INS_PFLUSHAN,
524 M68K_INS_PFLUSHN,
525 M68K_INS_PLOADR,
526 M68K_INS_PLOADW,
527 M68K_INS_PLPAR,
528 M68K_INS_PLPAW,
529 M68K_INS_PMOVE,
530 M68K_INS_PMOVEFD,
531 M68K_INS_PTESTR,
532 M68K_INS_PTESTW,
533 M68K_INS_PULSE,
534 M68K_INS_REMS,
535 M68K_INS_REMU,
536 M68K_INS_RESET,
537 M68K_INS_ROL,
538 M68K_INS_ROR,
539 M68K_INS_ROXL,
540 M68K_INS_ROXR,
541 M68K_INS_RTD,
542 M68K_INS_RTE,
543 M68K_INS_RTM,
544 M68K_INS_RTR,
545 M68K_INS_RTS,
546 M68K_INS_SBCD,
547 M68K_INS_ST,
548 M68K_INS_SF,
549 M68K_INS_SHI,
550 M68K_INS_SLS,
551 M68K_INS_SCC,
552 M68K_INS_SHS,
553 M68K_INS_SCS,
554 M68K_INS_SLO,
555 M68K_INS_SNE,
556 M68K_INS_SEQ,
557 M68K_INS_SVC,
558 M68K_INS_SVS,
559 M68K_INS_SPL,
560 M68K_INS_SMI,
561 M68K_INS_SGE,
562 M68K_INS_SLT,
563 M68K_INS_SGT,
564 M68K_INS_SLE,
565 M68K_INS_STOP,
566 M68K_INS_SUB,
567 M68K_INS_SUBA,
568 M68K_INS_SUBI,
569 M68K_INS_SUBQ,
570 M68K_INS_SUBX,
571 M68K_INS_SWAP,
572 M68K_INS_TAS,
573 M68K_INS_TRAP,
574 M68K_INS_TRAPV,
575 M68K_INS_TRAPT,
576 M68K_INS_TRAPF,
577 M68K_INS_TRAPHI,
578 M68K_INS_TRAPLS,
579 M68K_INS_TRAPCC,
580 M68K_INS_TRAPHS,
581 M68K_INS_TRAPCS,
582 M68K_INS_TRAPLO,
583 M68K_INS_TRAPNE,
584 M68K_INS_TRAPEQ,
585 M68K_INS_TRAPVC,
586 M68K_INS_TRAPVS,
587 M68K_INS_TRAPPL,
588 M68K_INS_TRAPMI,
589 M68K_INS_TRAPGE,
590 M68K_INS_TRAPLT,
591 M68K_INS_TRAPGT,
592 M68K_INS_TRAPLE,
593 M68K_INS_TST,
594 M68K_INS_UNLK,
595 M68K_INS_UNPK,
596 M68K_INS_ENDING, // <-- mark the end of the list of instructions
597} m68k_insn;
598 
599/// Group of M68K instructions
600typedef enum m68k_group_type {
601 M68K_GRP_INVALID = 0, ///< CS_GRUP_INVALID
602 M68K_GRP_JUMP, ///< = CS_GRP_JUMP
603 M68K_GRP_RET = 3, ///< = CS_GRP_RET
604 M68K_GRP_IRET = 5, ///< = CS_GRP_IRET
605 M68K_GRP_BRANCH_RELATIVE = 7, ///< = CS_GRP_BRANCH_RELATIVE
606 
607 M68K_GRP_ENDING,// <-- mark the end of the list of groups
608} m68k_group_type;
609 
610#ifdef __cplusplus
611}
612#endif
613 
614#endif
615