Rizin
unix-like reverse engineering framework and cli tools
X86DisassemblerDecoder.h File Reference
#include <stdio.h>
#include "X86DisassemblerDecoderCommon.h"

Go to the source code of this file.

Classes

struct  reader_info
 
struct  InstructionSpecifier
 
struct  InternalInstruction
 

Macros

#define modFromModRM(modRM)   (((modRM) & 0xc0) >> 6)
 
#define regFromModRM(modRM)   (((modRM) & 0x38) >> 3)
 
#define rmFromModRM(modRM)   ((modRM) & 0x7)
 
#define scaleFromSIB(sib)   (((sib) & 0xc0) >> 6)
 
#define indexFromSIB(sib)   (((sib) & 0x38) >> 3)
 
#define baseFromSIB(sib)   ((sib) & 0x7)
 
#define wFromREX(rex)   (((rex) & 0x8) >> 3)
 
#define rFromREX(rex)   (((rex) & 0x4) >> 2)
 
#define xFromREX(rex)   (((rex) & 0x2) >> 1)
 
#define bFromREX(rex)   ((rex) & 0x1)
 
#define rFromEVEX2of4(evex)   (((~(evex)) & 0x80) >> 7)
 
#define xFromEVEX2of4(evex)   (((~(evex)) & 0x40) >> 6)
 
#define bFromEVEX2of4(evex)   (((~(evex)) & 0x20) >> 5)
 
#define r2FromEVEX2of4(evex)   (((~(evex)) & 0x10) >> 4)
 
#define mmFromEVEX2of4(evex)   ((evex) & 0x3)
 
#define wFromEVEX3of4(evex)   (((evex) & 0x80) >> 7)
 
#define vvvvFromEVEX3of4(evex)   (((~(evex)) & 0x78) >> 3)
 
#define ppFromEVEX3of4(evex)   ((evex) & 0x3)
 
#define zFromEVEX4of4(evex)   (((evex) & 0x80) >> 7)
 
#define l2FromEVEX4of4(evex)   (((evex) & 0x40) >> 6)
 
#define lFromEVEX4of4(evex)   (((evex) & 0x20) >> 5)
 
#define bFromEVEX4of4(evex)   (((evex) & 0x10) >> 4)
 
#define v2FromEVEX4of4(evex)   (((~evex) & 0x8) >> 3)
 
#define aaaFromEVEX4of4(evex)   ((evex) & 0x7)
 
#define rFromVEX2of3(vex)   (((~(vex)) & 0x80) >> 7)
 
#define xFromVEX2of3(vex)   (((~(vex)) & 0x40) >> 6)
 
#define bFromVEX2of3(vex)   (((~(vex)) & 0x20) >> 5)
 
#define mmmmmFromVEX2of3(vex)   ((vex) & 0x1f)
 
#define wFromVEX3of3(vex)   (((vex) & 0x80) >> 7)
 
#define vvvvFromVEX3of3(vex)   (((~(vex)) & 0x78) >> 3)
 
#define lFromVEX3of3(vex)   (((vex) & 0x4) >> 2)
 
#define ppFromVEX3of3(vex)   ((vex) & 0x3)
 
#define rFromVEX2of2(vex)   (((~(vex)) & 0x80) >> 7)
 
#define vvvvFromVEX2of2(vex)   (((~(vex)) & 0x78) >> 3)
 
#define lFromVEX2of2(vex)   (((vex) & 0x4) >> 2)
 
#define ppFromVEX2of2(vex)   ((vex) & 0x3)
 
#define rFromXOP2of3(xop)   (((~(xop)) & 0x80) >> 7)
 
#define xFromXOP2of3(xop)   (((~(xop)) & 0x40) >> 6)
 
#define bFromXOP2of3(xop)   (((~(xop)) & 0x20) >> 5)
 
#define mmmmmFromXOP2of3(xop)   ((xop) & 0x1f)
 
#define wFromXOP3of3(xop)   (((xop) & 0x80) >> 7)
 
#define vvvvFromXOP3of3(vex)   (((~(vex)) & 0x78) >> 3)
 
#define lFromXOP3of3(xop)   (((xop) & 0x4) >> 2)
 
#define ppFromXOP3of3(xop)   ((xop) & 0x3)
 
#define REGS_8BIT
 
#define EA_BASES_16BIT
 
#define REGS_16BIT
 
#define EA_BASES_32BIT
 
#define REGS_32BIT
 
#define EA_BASES_64BIT
 
#define REGS_64BIT
 
#define REGS_MMX
 
#define REGS_XMM
 
#define REGS_YMM
 
#define REGS_ZMM
 
#define REGS_MASKS
 
#define REGS_SEGMENT
 
#define REGS_DEBUG
 
#define REGS_CONTROL
 
#define ALL_EA_BASES
 
#define ALL_SIB_BASES
 
#define ALL_REGS
 
#define ENTRY(x)   EA_BASE_##x,
 
#define ENTRY(x)   EA_REG_##x,
 
#define ENTRY(x)   SIB_INDEX_##x,
 
#define ENTRY(x)   SIB_BASE_##x,
 
#define ENTRY(x)   MODRM_REG_##x,
 

Typedefs

typedef int(* byteReader_t) (const struct reader_info *arg, uint8_t *byte, uint64_t address)
 
typedef void(* dlog_t) (void *arg, const char *log)
 
typedef struct InternalInstruction InternalInstruction
 

Enumerations

enum  EABase { EA_BASE_NONE , EA_max }
 
enum  SIBIndex { SIB_INDEX_NONE , SIB_INDEX_max }
 
enum  SIBBase { SIB_BASE_NONE , SIB_BASE_max }
 
enum  EADisplacement { EA_DISP_NONE , EA_DISP_8 , EA_DISP_16 , EA_DISP_32 }
 
enum  Reg { MODRM_REG_max }
 
enum  SegmentOverride {
  SEG_OVERRIDE_NONE , SEG_OVERRIDE_CS , SEG_OVERRIDE_SS , SEG_OVERRIDE_DS ,
  SEG_OVERRIDE_ES , SEG_OVERRIDE_FS , SEG_OVERRIDE_GS , SEG_OVERRIDE_max
}
 
enum  VEXLeadingOpcodeByte { VEX_LOB_0F = 0x1 , VEX_LOB_0F38 = 0x2 , VEX_LOB_0F3A = 0x3 }
 
enum  XOPMapSelect { XOP_MAP_SELECT_8 = 0x8 , XOP_MAP_SELECT_9 = 0x9 , XOP_MAP_SELECT_A = 0xA }
 
enum  VEXPrefixCode { VEX_PREFIX_NONE = 0x0 , VEX_PREFIX_66 = 0x1 , VEX_PREFIX_F3 = 0x2 , VEX_PREFIX_F2 = 0x3 }
 
enum  VectorExtensionType {
  TYPE_NO_VEX_XOP = 0x0 , TYPE_VEX_2B = 0x1 , TYPE_VEX_3B = 0x2 , TYPE_EVEX = 0x3 ,
  TYPE_XOP = 0x4
}
 

Functions

int decodeInstruction (struct InternalInstruction *insn, byteReader_t reader, const void *readerArg, uint64_t startLoc, DisassemblerMode mode)
 

Macro Definition Documentation

◆ aaaFromEVEX4of4

#define aaaFromEVEX4of4 (   evex)    ((evex) & 0x7)

Definition at line 57 of file X86DisassemblerDecoder.h.

◆ ALL_EA_BASES

#define ALL_EA_BASES
Value:
EA_BASES_16BIT \
EA_BASES_32BIT \
EA_BASES_64BIT

Definition at line 383 of file X86DisassemblerDecoder.h.

◆ ALL_REGS

◆ ALL_SIB_BASES

#define ALL_SIB_BASES
Value:
REGS_32BIT \
REGS_64BIT

Definition at line 388 of file X86DisassemblerDecoder.h.

◆ baseFromSIB

#define baseFromSIB (   sib)    ((sib) & 0x7)

Definition at line 38 of file X86DisassemblerDecoder.h.

◆ bFromEVEX2of4

#define bFromEVEX2of4 (   evex)    (((~(evex)) & 0x20) >> 5)

Definition at line 46 of file X86DisassemblerDecoder.h.

◆ bFromEVEX4of4

#define bFromEVEX4of4 (   evex)    (((evex) & 0x10) >> 4)

Definition at line 55 of file X86DisassemblerDecoder.h.

◆ bFromREX

#define bFromREX (   rex)    ((rex) & 0x1)

Definition at line 42 of file X86DisassemblerDecoder.h.

◆ bFromVEX2of3

#define bFromVEX2of3 (   vex)    (((~(vex)) & 0x20) >> 5)

Definition at line 61 of file X86DisassemblerDecoder.h.

◆ bFromXOP2of3

#define bFromXOP2of3 (   xop)    (((~(xop)) & 0x20) >> 5)

Definition at line 75 of file X86DisassemblerDecoder.h.

◆ EA_BASES_16BIT

#define EA_BASES_16BIT
Value:
ENTRY(BX_SI) \
ENTRY(BX_DI) \
ENTRY(BP_SI) \
ENTRY(BP_DI) \
ENTRY(SI) \
ENTRY(DI) \
ENTRY(BP) \
ENTRY(BX) \
ENTRY(R8W) \
ENTRY(R9W) \
ENTRY(R10W) \
ENTRY(R11W) \
ENTRY(R12W) \
ENTRY(R13W) \
ENTRY(R14W) \
ENTRY(R15W)

Definition at line 108 of file X86DisassemblerDecoder.h.

◆ EA_BASES_32BIT

#define EA_BASES_32BIT
Value:
ENTRY(EAX) \
ENTRY(ECX) \
ENTRY(EDX) \
ENTRY(EBX) \
ENTRY(sib) \
ENTRY(EBP) \
ENTRY(ESI) \
ENTRY(EDI) \
ENTRY(R8D) \
ENTRY(R9D) \
ENTRY(R10D) \
ENTRY(R11D) \
ENTRY(R12D) \
ENTRY(R13D) \
ENTRY(R14D) \
ENTRY(R15D)

Definition at line 144 of file X86DisassemblerDecoder.h.

◆ EA_BASES_64BIT

#define EA_BASES_64BIT
Value:
ENTRY(RCX) \
ENTRY(RDX) \
ENTRY(RBX) \
ENTRY(sib64) \
ENTRY(RBP) \
ENTRY(RSI) \
ENTRY(RDI) \
ENTRY(R8) \
ENTRY(R9) \
ENTRY(R10) \
ENTRY(R11) \
ENTRY(R12) \
ENTRY(R13) \
ENTRY(R14) \
ENTRY(R15)

Definition at line 180 of file X86DisassemblerDecoder.h.

◆ ENTRY [1/5]

#define ENTRY (   x)    EA_BASE_##x,

Definition at line 467 of file X86DisassemblerDecoder.h.

◆ ENTRY [2/5]

#define ENTRY (   x)    EA_REG_##x,

Definition at line 467 of file X86DisassemblerDecoder.h.

◆ ENTRY [3/5]

#define ENTRY (   x)    SIB_INDEX_##x,

Definition at line 467 of file X86DisassemblerDecoder.h.

◆ ENTRY [4/5]

#define ENTRY (   x)    SIB_BASE_##x,

Definition at line 467 of file X86DisassemblerDecoder.h.

◆ ENTRY [5/5]

#define ENTRY (   x)    MODRM_REG_##x,

Definition at line 467 of file X86DisassemblerDecoder.h.

◆ indexFromSIB

#define indexFromSIB (   sib)    (((sib) & 0x38) >> 3)

Definition at line 37 of file X86DisassemblerDecoder.h.

◆ l2FromEVEX4of4

#define l2FromEVEX4of4 (   evex)    (((evex) & 0x40) >> 6)

Definition at line 53 of file X86DisassemblerDecoder.h.

◆ lFromEVEX4of4

#define lFromEVEX4of4 (   evex)    (((evex) & 0x20) >> 5)

Definition at line 54 of file X86DisassemblerDecoder.h.

◆ lFromVEX2of2

#define lFromVEX2of2 (   vex)    (((vex) & 0x4) >> 2)

Definition at line 70 of file X86DisassemblerDecoder.h.

◆ lFromVEX3of3

#define lFromVEX3of3 (   vex)    (((vex) & 0x4) >> 2)

Definition at line 65 of file X86DisassemblerDecoder.h.

◆ lFromXOP3of3

#define lFromXOP3of3 (   xop)    (((xop) & 0x4) >> 2)

Definition at line 79 of file X86DisassemblerDecoder.h.

◆ mmFromEVEX2of4

#define mmFromEVEX2of4 (   evex)    ((evex) & 0x3)

Definition at line 48 of file X86DisassemblerDecoder.h.

◆ mmmmmFromVEX2of3

#define mmmmmFromVEX2of3 (   vex)    ((vex) & 0x1f)

Definition at line 62 of file X86DisassemblerDecoder.h.

◆ mmmmmFromXOP2of3

#define mmmmmFromXOP2of3 (   xop)    ((xop) & 0x1f)

Definition at line 76 of file X86DisassemblerDecoder.h.

◆ modFromModRM

#define modFromModRM (   modRM)    (((modRM) & 0xc0) >> 6)

Definition at line 33 of file X86DisassemblerDecoder.h.

◆ ppFromEVEX3of4

#define ppFromEVEX3of4 (   evex)    ((evex) & 0x3)

Definition at line 51 of file X86DisassemblerDecoder.h.

◆ ppFromVEX2of2

#define ppFromVEX2of2 (   vex)    ((vex) & 0x3)

Definition at line 71 of file X86DisassemblerDecoder.h.

◆ ppFromVEX3of3

#define ppFromVEX3of3 (   vex)    ((vex) & 0x3)

Definition at line 66 of file X86DisassemblerDecoder.h.

◆ ppFromXOP3of3

#define ppFromXOP3of3 (   xop)    ((xop) & 0x3)

Definition at line 80 of file X86DisassemblerDecoder.h.

◆ r2FromEVEX2of4

#define r2FromEVEX2of4 (   evex)    (((~(evex)) & 0x10) >> 4)

Definition at line 47 of file X86DisassemblerDecoder.h.

◆ regFromModRM

#define regFromModRM (   modRM)    (((modRM) & 0x38) >> 3)

Definition at line 34 of file X86DisassemblerDecoder.h.

◆ REGS_16BIT

#define REGS_16BIT
Value:
ENTRY(AX) \
ENTRY(CX) \
ENTRY(DX) \
ENTRY(BX) \
ENTRY(SP) \
ENTRY(BP) \
ENTRY(SI) \
ENTRY(DI) \
ENTRY(R8W) \
ENTRY(R9W) \
ENTRY(R10W) \
ENTRY(R11W) \
ENTRY(R12W) \
ENTRY(R13W) \
ENTRY(R14W) \
ENTRY(R15W)
#define SP(t, s, c)
Definition: engine.c:123

Definition at line 126 of file X86DisassemblerDecoder.h.

◆ REGS_32BIT

#define REGS_32BIT
Value:
ENTRY(EAX) \
ENTRY(ECX) \
ENTRY(EDX) \
ENTRY(EBX) \
ENTRY(ESP) \
ENTRY(EBP) \
ENTRY(ESI) \
ENTRY(EDI) \
ENTRY(R8D) \
ENTRY(R9D) \
ENTRY(R10D) \
ENTRY(R11D) \
ENTRY(R12D) \
ENTRY(R13D) \
ENTRY(R14D) \
ENTRY(R15D)

Definition at line 162 of file X86DisassemblerDecoder.h.

◆ REGS_64BIT

#define REGS_64BIT
Value:
ENTRY(RCX) \
ENTRY(RDX) \
ENTRY(RBX) \
ENTRY(RSP) \
ENTRY(RBP) \
ENTRY(RSI) \
ENTRY(RDI) \
ENTRY(R8) \
ENTRY(R9) \
ENTRY(R10) \
ENTRY(R11) \
ENTRY(R12) \
ENTRY(R13) \
ENTRY(R14) \
ENTRY(R15)

Definition at line 198 of file X86DisassemblerDecoder.h.

◆ REGS_8BIT

#define REGS_8BIT
Value:
ENTRY(AL) \
ENTRY(CL) \
ENTRY(DL) \
ENTRY(BL) \
ENTRY(AH) \
ENTRY(CH) \
ENTRY(DH) \
ENTRY(BH) \
ENTRY(R8B) \
ENTRY(R9B) \
ENTRY(R10B) \
ENTRY(R11B) \
ENTRY(R12B) \
ENTRY(R13B) \
ENTRY(R14B) \
ENTRY(R15B) \
ENTRY(SPL) \
ENTRY(BPL) \
ENTRY(SIL) \
ENTRY(DIL)

Definition at line 86 of file X86DisassemblerDecoder.h.

◆ REGS_CONTROL

#define REGS_CONTROL
Value:
ENTRY(CR1) \
ENTRY(CR2) \
ENTRY(CR3) \
ENTRY(CR4) \
ENTRY(CR5) \
ENTRY(CR6) \
ENTRY(CR7) \
ENTRY(CR8) \
ENTRY(CR9) \
ENTRY(CR10) \
ENTRY(CR11) \
ENTRY(CR12) \
ENTRY(CR13) \
ENTRY(CR14) \
ENTRY(CR15)
#define CR3
Definition: sftypes.h:901
#define CR2
Definition: sftypes.h:900
#define CR0
Definition: sftypes.h:898
#define CR1
Definition: sftypes.h:899

Definition at line 365 of file X86DisassemblerDecoder.h.

◆ REGS_DEBUG

#define REGS_DEBUG
Value:
ENTRY(DR0) \
ENTRY(DR1) \
ENTRY(DR2) \
ENTRY(DR3) \
ENTRY(DR4) \
ENTRY(DR5) \
ENTRY(DR6) \
ENTRY(DR7) \
ENTRY(DR8) \
ENTRY(DR9) \
ENTRY(DR10) \
ENTRY(DR11) \
ENTRY(DR12) \
ENTRY(DR13) \
ENTRY(DR14) \
ENTRY(DR15)

Definition at line 347 of file X86DisassemblerDecoder.h.

◆ REGS_MASKS

#define REGS_MASKS
Value:
ENTRY(K0) \
ENTRY(K1) \
ENTRY(K2) \
ENTRY(K3) \
ENTRY(K4) \
ENTRY(K5) \
ENTRY(K6) \
ENTRY(K7)

Definition at line 329 of file X86DisassemblerDecoder.h.

◆ REGS_MMX

#define REGS_MMX
Value:
ENTRY(MM0) \
ENTRY(MM1) \
ENTRY(MM2) \
ENTRY(MM3) \
ENTRY(MM4) \
ENTRY(MM5) \
ENTRY(MM6) \
ENTRY(MM7)

Definition at line 216 of file X86DisassemblerDecoder.h.

◆ REGS_SEGMENT

#define REGS_SEGMENT
Value:
ENTRY(ES) \
ENTRY(CS) \
ENTRY(SS) \
ENTRY(DS) \
ENTRY(FS) \
ENTRY(GS)

Definition at line 339 of file X86DisassemblerDecoder.h.

◆ REGS_XMM

#define REGS_XMM

Definition at line 226 of file X86DisassemblerDecoder.h.

◆ REGS_YMM

#define REGS_YMM

Definition at line 261 of file X86DisassemblerDecoder.h.

◆ REGS_ZMM

#define REGS_ZMM

Definition at line 295 of file X86DisassemblerDecoder.h.

◆ rFromEVEX2of4

#define rFromEVEX2of4 (   evex)    (((~(evex)) & 0x80) >> 7)

Definition at line 44 of file X86DisassemblerDecoder.h.

◆ rFromREX

#define rFromREX (   rex)    (((rex) & 0x4) >> 2)

Definition at line 40 of file X86DisassemblerDecoder.h.

◆ rFromVEX2of2

#define rFromVEX2of2 (   vex)    (((~(vex)) & 0x80) >> 7)

Definition at line 68 of file X86DisassemblerDecoder.h.

◆ rFromVEX2of3

#define rFromVEX2of3 (   vex)    (((~(vex)) & 0x80) >> 7)

Definition at line 59 of file X86DisassemblerDecoder.h.

◆ rFromXOP2of3

#define rFromXOP2of3 (   xop)    (((~(xop)) & 0x80) >> 7)

Definition at line 73 of file X86DisassemblerDecoder.h.

◆ rmFromModRM

#define rmFromModRM (   modRM)    ((modRM) & 0x7)

Definition at line 35 of file X86DisassemblerDecoder.h.

◆ scaleFromSIB

#define scaleFromSIB (   sib)    (((sib) & 0xc0) >> 6)

Definition at line 36 of file X86DisassemblerDecoder.h.

◆ v2FromEVEX4of4

#define v2FromEVEX4of4 (   evex)    (((~evex) & 0x8) >> 3)

Definition at line 56 of file X86DisassemblerDecoder.h.

◆ vvvvFromEVEX3of4

#define vvvvFromEVEX3of4 (   evex)    (((~(evex)) & 0x78) >> 3)

Definition at line 50 of file X86DisassemblerDecoder.h.

◆ vvvvFromVEX2of2

#define vvvvFromVEX2of2 (   vex)    (((~(vex)) & 0x78) >> 3)

Definition at line 69 of file X86DisassemblerDecoder.h.

◆ vvvvFromVEX3of3

#define vvvvFromVEX3of3 (   vex)    (((~(vex)) & 0x78) >> 3)

Definition at line 64 of file X86DisassemblerDecoder.h.

◆ vvvvFromXOP3of3

#define vvvvFromXOP3of3 (   vex)    (((~(vex)) & 0x78) >> 3)

Definition at line 78 of file X86DisassemblerDecoder.h.

◆ wFromEVEX3of4

#define wFromEVEX3of4 (   evex)    (((evex) & 0x80) >> 7)

Definition at line 49 of file X86DisassemblerDecoder.h.

◆ wFromREX

#define wFromREX (   rex)    (((rex) & 0x8) >> 3)

Definition at line 39 of file X86DisassemblerDecoder.h.

◆ wFromVEX3of3

#define wFromVEX3of3 (   vex)    (((vex) & 0x80) >> 7)

Definition at line 63 of file X86DisassemblerDecoder.h.

◆ wFromXOP3of3

#define wFromXOP3of3 (   xop)    (((xop) & 0x80) >> 7)

Definition at line 77 of file X86DisassemblerDecoder.h.

◆ xFromEVEX2of4

#define xFromEVEX2of4 (   evex)    (((~(evex)) & 0x40) >> 6)

Definition at line 45 of file X86DisassemblerDecoder.h.

◆ xFromREX

#define xFromREX (   rex)    (((rex) & 0x2) >> 1)

Definition at line 41 of file X86DisassemblerDecoder.h.

◆ xFromVEX2of3

#define xFromVEX2of3 (   vex)    (((~(vex)) & 0x40) >> 6)

Definition at line 60 of file X86DisassemblerDecoder.h.

◆ xFromXOP2of3

#define xFromXOP2of3 (   xop)    (((~(xop)) & 0x40) >> 6)

Definition at line 74 of file X86DisassemblerDecoder.h.

◆ zFromEVEX4of4

#define zFromEVEX4of4 (   evex)    (((evex) & 0x80) >> 7)

Definition at line 52 of file X86DisassemblerDecoder.h.

Typedef Documentation

◆ byteReader_t

typedef int(* byteReader_t) (const struct reader_info *arg, uint8_t *byte, uint64_t address)

Definition at line 537 of file X86DisassemblerDecoder.h.

◆ dlog_t

typedef void(* dlog_t) (void *arg, const char *log)

Definition at line 547 of file X86DisassemblerDecoder.h.

◆ InternalInstruction

Enumeration Type Documentation

◆ EABase

enum EABase
Enumerator
EA_BASE_NONE 
EA_max 

Definition at line 413 of file X86DisassemblerDecoder.h.

413  {
414  EA_BASE_NONE,
415 #define ENTRY(x) EA_BASE_##x,
417 #undef ENTRY
418 #define ENTRY(x) EA_REG_##x,
419  ALL_REGS
420 #undef ENTRY
421  EA_max
422 } EABase;
#define ALL_REGS
#define ALL_EA_BASES

◆ EADisplacement

Enumerator
EA_DISP_NONE 
EA_DISP_8 
EA_DISP_16 
EA_DISP_32 

Definition at line 456 of file X86DisassemblerDecoder.h.

456  {
457  EA_DISP_NONE,
458  EA_DISP_8,
459  EA_DISP_16,
460  EA_DISP_32

◆ Reg

enum Reg
Enumerator
MODRM_REG_max 

Definition at line 466 of file X86DisassemblerDecoder.h.

466  {
467 #define ENTRY(x) MODRM_REG_##x,
468  ALL_REGS
469 #undef ENTRY
471 } Reg;

◆ SegmentOverride

Enumerator
SEG_OVERRIDE_NONE 
SEG_OVERRIDE_CS 
SEG_OVERRIDE_SS 
SEG_OVERRIDE_DS 
SEG_OVERRIDE_ES 
SEG_OVERRIDE_FS 
SEG_OVERRIDE_GS 
SEG_OVERRIDE_max 

Definition at line 476 of file X86DisassemblerDecoder.h.

476  {
@ SEG_OVERRIDE_NONE
@ SEG_OVERRIDE_max
@ SEG_OVERRIDE_ES
@ SEG_OVERRIDE_CS
@ SEG_OVERRIDE_GS
@ SEG_OVERRIDE_SS
@ SEG_OVERRIDE_FS
@ SEG_OVERRIDE_DS

◆ SIBBase

enum SIBBase
Enumerator
SIB_BASE_NONE 
SIB_BASE_max 

Definition at line 444 of file X86DisassemblerDecoder.h.

444  {
446 #define ENTRY(x) SIB_BASE_##x,
448 #undef ENTRY
450 } SIBBase;
#define ALL_SIB_BASES

◆ SIBIndex

enum SIBIndex
Enumerator
SIB_INDEX_NONE 
SIB_INDEX_max 

Definition at line 430 of file X86DisassemblerDecoder.h.

430  {
432 #define ENTRY(x) SIB_INDEX_##x,
434  REGS_XMM
435  REGS_YMM
436  REGS_ZMM
437 #undef ENTRY
439 } SIBIndex;
@ SIB_INDEX_NONE
#define REGS_YMM
#define REGS_XMM
#define REGS_ZMM

◆ VectorExtensionType

Enumerator
TYPE_NO_VEX_XOP 
TYPE_VEX_2B 
TYPE_VEX_3B 
TYPE_EVEX 
TYPE_XOP 

Definition at line 512 of file X86DisassemblerDecoder.h.

512  {
513  TYPE_NO_VEX_XOP = 0x0,
514  TYPE_VEX_2B = 0x1,
515  TYPE_VEX_3B = 0x2,
516  TYPE_EVEX = 0x3,
517  TYPE_XOP = 0x4
@ TYPE_NO_VEX_XOP

◆ VEXLeadingOpcodeByte

Enumerator
VEX_LOB_0F 
VEX_LOB_0F38 
VEX_LOB_0F3A 

Definition at line 490 of file X86DisassemblerDecoder.h.

490  {
491  VEX_LOB_0F = 0x1,
492  VEX_LOB_0F38 = 0x2,
493  VEX_LOB_0F3A = 0x3
VEXLeadingOpcodeByte

◆ VEXPrefixCode

Enumerator
VEX_PREFIX_NONE 
VEX_PREFIX_66 
VEX_PREFIX_F3 
VEX_PREFIX_F2 

Definition at line 505 of file X86DisassemblerDecoder.h.

505  {
506  VEX_PREFIX_NONE = 0x0,
507  VEX_PREFIX_66 = 0x1,
508  VEX_PREFIX_F3 = 0x2,
509  VEX_PREFIX_F2 = 0x3
510 } VEXPrefixCode;
@ VEX_PREFIX_NONE

◆ XOPMapSelect

Enumerator
XOP_MAP_SELECT_8 
XOP_MAP_SELECT_9 
XOP_MAP_SELECT_A 

Definition at line 496 of file X86DisassemblerDecoder.h.

496  {
497  XOP_MAP_SELECT_8 = 0x8,
498  XOP_MAP_SELECT_9 = 0x9,
499  XOP_MAP_SELECT_A = 0xA
500 } XOPMapSelect;
@ XOP_MAP_SELECT_9
@ XOP_MAP_SELECT_A
@ XOP_MAP_SELECT_8

Function Documentation

◆ decodeInstruction()

int decodeInstruction ( struct InternalInstruction insn,
byteReader_t  reader,
const void *  readerArg,
uint64_t  startLoc,
DisassemblerMode  mode 
)