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