Classes |
| struct | _INST |
| struct | _OPERAND |
| struct | _INSTRUCTION |
Defines |
| #define | __LIBDASM_VERSION__ 0x01040000 |
| #define | GET_VERSION_MAJOR (__LIBDASM_VERSION__ & 0xff000000) >> 24 |
| #define | GET_VERSION_MINOR1 (__LIBDASM_VERSION__ & 0x00ff0000) >> 16 |
| #define | GET_VERSION_MINOR2 (__LIBDASM_VERSION__ & 0x0000ff00) >> 8 |
| #define | GET_VERSION_MINOR3 (__LIBDASM_VERSION__ & 0x000000ff) |
| #define | __LITTLE_ENDIAN__ |
| #define | REGISTER_EAX 0 |
| #define | REGISTER_ECX 1 |
| #define | REGISTER_EDX 2 |
| #define | REGISTER_EBX 3 |
| #define | REGISTER_ESP 4 |
| #define | REGISTER_EBP 5 |
| #define | REGISTER_ESI 6 |
| #define | REGISTER_EDI 7 |
| #define | REGISTER_NOP 8 |
| #define | REG_EAX REGISTER_EAX |
| #define | REG_AX REG_EAX |
| #define | REG_AL REG_EAX |
| #define | REG_ES REG_EAX |
| #define | REG_ST0 REG_EAX |
| #define | REG_ECX REGISTER_ECX |
| #define | REG_CX REG_ECX |
| #define | REG_CL REG_ECX |
| #define | REG_CS REG_ECX |
| #define | REG_ST1 REG_ECX |
| #define | REG_EDX REGISTER_EDX |
| #define | REG_DX REG_EDX |
| #define | REG_DL REG_EDX |
| #define | REG_SS REG_EDX |
| #define | REG_ST2 REG_EDX |
| #define | REG_EBX REGISTER_EBX |
| #define | REG_BX REG_EBX |
| #define | REG_BL REG_EBX |
| #define | REG_DS REG_EBX |
| #define | REG_ST3 REG_EBX |
| #define | REG_ESP REGISTER_ESP |
| #define | REG_SP REG_ESP |
| #define | REG_AH REG_ESP |
| #define | REG_FS REG_ESP |
| #define | REG_ST4 REG_ESP |
| #define | REG_EBP REGISTER_EBP |
| #define | REG_BP REG_EBP |
| #define | REG_CH REG_EBP |
| #define | REG_GS REG_EBP |
| #define | REG_ST5 REG_EBP |
| #define | REG_ESI REGISTER_ESI |
| #define | REG_SI REG_ESI |
| #define | REG_DH REG_ESI |
| #define | REG_ST6 REG_ESI |
| #define | REG_EDI REGISTER_EDI |
| #define | REG_DI REG_EDI |
| #define | REG_BH REG_EDI |
| #define | REG_ST7 REG_EDI |
| #define | REG_NOP REGISTER_NOP |
| #define | REGISTER_TYPE_GEN 1 |
| #define | REGISTER_TYPE_SEGMENT 2 |
| #define | REGISTER_TYPE_DEBUG 3 |
| #define | REGISTER_TYPE_CONTROL 4 |
| #define | REGISTER_TYPE_TEST 5 |
| #define | REGISTER_TYPE_XMM 6 |
| #define | REGISTER_TYPE_MMX 7 |
| #define | REGISTER_TYPE_FPU 8 |
| #define | MASK_PREFIX_G1(x) ((x) & 0xff000000) >> 24 |
| #define | PREFIX_LOCK 0x01000000 |
| #define | PREFIX_REPNE 0x02000000 |
| #define | PREFIX_REP 0x03000000 |
| #define | PREFIX_REPE 0x03000000 |
| #define | MASK_PREFIX_G2(x) ((x) & 0x00ff0000) >> 16 |
| #define | PREFIX_ES_OVERRIDE 0x00010000 |
| #define | PREFIX_CS_OVERRIDE 0x00020000 |
| #define | PREFIX_SS_OVERRIDE 0x00030000 |
| #define | PREFIX_DS_OVERRIDE 0x00040000 |
| #define | PREFIX_FS_OVERRIDE 0x00050000 |
| #define | PREFIX_GS_OVERRIDE 0x00060000 |
| #define | MASK_PREFIX_G3(x) ((x) & 0x0000ff00) >> 8 |
| #define | MASK_PREFIX_OPERAND(x) ((x) & 0x00000f00) >> 8 |
| #define | MASK_PREFIX_ADDR(x) ((x) & 0x0000f000) >> 12 |
| #define | PREFIX_OPERAND_SIZE_OVERRIDE 0x00000100 |
| #define | PREFIX_ADDR_SIZE_OVERRIDE 0x00001000 |
| #define | MASK_EXT(x) ((x) & 0x000000ff) |
| #define | EXT_G1_1 0x00000001 |
| #define | EXT_G1_2 0x00000002 |
| #define | EXT_G1_3 0x00000003 |
| #define | EXT_G2_1 0x00000004 |
| #define | EXT_G2_2 0x00000005 |
| #define | EXT_G2_3 0x00000006 |
| #define | EXT_G2_4 0x00000007 |
| #define | EXT_G2_5 0x00000008 |
| #define | EXT_G2_6 0x00000009 |
| #define | EXT_G3_1 0x0000000a |
| #define | EXT_G3_2 0x0000000b |
| #define | EXT_G4 0x0000000c |
| #define | EXT_G5 0x0000000d |
| #define | EXT_G6 0x0000000e |
| #define | EXT_G7 0x0000000f |
| #define | EXT_G8 0x00000010 |
| #define | EXT_G9 0x00000011 |
| #define | EXT_GA 0x00000012 |
| #define | EXT_GB 0x00000013 |
| #define | EXT_GC 0x00000014 |
| #define | EXT_GD 0x00000015 |
| #define | EXT_GE 0x00000016 |
| #define | EXT_GF 0x00000017 |
| #define | EXT_G0 0x00000018 |
| #define | EXT_T2 0x00000020 |
| #define | EXT_CP 0x00000030 |
| #define | TYPE_3 0x80000000 |
| #define | MASK_TYPE_FLAGS(x) ((x) & 0xff000000) |
| #define | MASK_TYPE_VALUE(x) ((x) & 0x00ffffff) |
| #define | FLAGS_NONE 0 |
| #define | MASK_AM(x) ((x) & 0x00ff0000) |
| #define | AM_A 0x00010000 |
| #define | AM_C 0x00020000 |
| #define | AM_D 0x00030000 |
| #define | AM_E 0x00040000 |
| #define | AM_G 0x00050000 |
| #define | AM_I 0x00060000 |
| #define | AM_J 0x00070000 |
| #define | AM_M 0x00080000 |
| #define | AM_O 0x00090000 |
| #define | AM_P 0x000a0000 |
| #define | AM_Q 0x000b0000 |
| #define | AM_R 0x000c0000 |
| #define | AM_S 0x000d0000 |
| #define | AM_T 0x000e0000 |
| #define | AM_V 0x000f0000 |
| #define | AM_W 0x00100000 |
| #define | AM_I1 0x00200000 |
| #define | AM_REG 0x00210000 |
| #define | AM_IND 0x00220000 |
| #define | MASK_OT(x) ((x) & 0xff000000) |
| #define | OT_a 0x01000000 |
| #define | OT_b 0x02000000 |
| #define | OT_c 0x03000000 |
| #define | OT_d 0x04000000 |
| #define | OT_q 0x05000000 |
| #define | OT_dq 0x06000000 |
| #define | OT_v 0x07000000 |
| #define | OT_w 0x08000000 |
| #define | OT_p 0x09000000 |
| #define | OT_pi 0x0a000000 |
| #define | OT_pd 0x0b000000 |
| #define | OT_ps 0x0c000000 |
| #define | OT_s 0x0d000000 |
| #define | OT_sd 0x0e000000 |
| #define | OT_ss 0x0f000000 |
| #define | OT_si 0x10000000 |
| #define | OT_t 0x11000000 |
| #define | MASK_PERMS(x) ((x) & 0x0000f000) |
| #define | P_r 0x00004000 |
| #define | P_w 0x00002000 |
| #define | P_x 0x00001000 |
| #define | MASK_FLAGS(x) ((x) & 0x00000f00) |
| #define | F_s 0x00000100 |
| #define | F_r 0x00000200 |
| #define | F_f 0x00000400 |
| #define | MASK_REG(x) ((x) & 0x0000000f) |
| #define | MASK_MODRM_MOD(x) (((x) & 0xc0) >> 6) |
| #define | MASK_MODRM_REG(x) (((x) & 0x38) >> 3) |
| #define | MASK_MODRM_RM(x) ((x) & 0x7) |
| #define | MASK_SIB_SCALE(x) MASK_MODRM_MOD(x) |
| #define | MASK_SIB_INDEX(x) MASK_MODRM_REG(x) |
| #define | MASK_SIB_BASE(x) MASK_MODRM_RM(x) |
Typedefs |
| typedef u_int8_t | BYTE |
| typedef u_int16_t | WORD |
| typedef u_int32_t | DWORD |
| typedef u_int64_t | QWORD |
| typedef int8_t | SBYTE |
| typedef int16_t | SWORD |
| typedef int32_t | SDWORD |
| typedef int64_t | SQWORD |
| typedef struct _INST | INST |
| typedef struct _INST * | PINST |
| typedef struct _OPERAND | OPERAND |
| typedef struct _OPERAND * | POPERAND |
| typedef struct _INSTRUCTION | INSTRUCTION |
| typedef struct _INSTRUCTION * | PINSTRUCTION |
Enumerations |
| enum | Mode { MODE_32,
MODE_16
} |
| enum | Format { FORMAT_ATT,
FORMAT_INTEL
} |
| enum | Instruction {
INSTRUCTION_TYPE_ASC,
INSTRUCTION_TYPE_DCL,
INSTRUCTION_TYPE_MOV,
INSTRUCTION_TYPE_MOVSR,
INSTRUCTION_TYPE_ADD,
INSTRUCTION_TYPE_XADD,
INSTRUCTION_TYPE_ADC,
INSTRUCTION_TYPE_SUB,
INSTRUCTION_TYPE_SBB,
INSTRUCTION_TYPE_INC,
INSTRUCTION_TYPE_DEC,
INSTRUCTION_TYPE_DIV,
INSTRUCTION_TYPE_IDIV,
INSTRUCTION_TYPE_NOT,
INSTRUCTION_TYPE_NEG,
INSTRUCTION_TYPE_STOS,
INSTRUCTION_TYPE_LODS,
INSTRUCTION_TYPE_SCAS,
INSTRUCTION_TYPE_MOVS,
INSTRUCTION_TYPE_MOVSX,
INSTRUCTION_TYPE_MOVZX,
INSTRUCTION_TYPE_CMPS,
INSTRUCTION_TYPE_SHX,
INSTRUCTION_TYPE_ROX,
INSTRUCTION_TYPE_MUL,
INSTRUCTION_TYPE_IMUL,
INSTRUCTION_TYPE_EIMUL,
INSTRUCTION_TYPE_XOR,
INSTRUCTION_TYPE_LEA,
INSTRUCTION_TYPE_XCHG,
INSTRUCTION_TYPE_CMP,
INSTRUCTION_TYPE_TEST,
INSTRUCTION_TYPE_PUSH,
INSTRUCTION_TYPE_AND,
INSTRUCTION_TYPE_OR,
INSTRUCTION_TYPE_POP,
INSTRUCTION_TYPE_JMP,
INSTRUCTION_TYPE_JMPC,
INSTRUCTION_TYPE_SETC,
INSTRUCTION_TYPE_MOVC,
INSTRUCTION_TYPE_LOOP,
INSTRUCTION_TYPE_CALL,
INSTRUCTION_TYPE_RET,
INSTRUCTION_TYPE_INT,
INSTRUCTION_TYPE_BT,
INSTRUCTION_TYPE_BTS,
INSTRUCTION_TYPE_BTR,
INSTRUCTION_TYPE_BTC,
INSTRUCTION_TYPE_BSF,
INSTRUCTION_TYPE_BSR,
INSTRUCTION_TYPE_BSWAP,
INSTRUCTION_TYPE_SGDT,
INSTRUCTION_TYPE_SIDT,
INSTRUCTION_TYPE_SLDT,
INSTRUCTION_TYPE_LFP,
INSTRUCTION_TYPE_FCMOVC,
INSTRUCTION_TYPE_FADD,
INSTRUCTION_TYPE_FADDP,
INSTRUCTION_TYPE_FIADD,
INSTRUCTION_TYPE_FSUB,
INSTRUCTION_TYPE_FSUBP,
INSTRUCTION_TYPE_FISUB,
INSTRUCTION_TYPE_FSUBR,
INSTRUCTION_TYPE_FSUBRP,
INSTRUCTION_TYPE_FISUBR,
INSTRUCTION_TYPE_FMUL,
INSTRUCTION_TYPE_FMULP,
INSTRUCTION_TYPE_FIMUL,
INSTRUCTION_TYPE_FDIV,
INSTRUCTION_TYPE_FDIVP,
INSTRUCTION_TYPE_FDIVR,
INSTRUCTION_TYPE_FDIVRP,
INSTRUCTION_TYPE_FIDIV,
INSTRUCTION_TYPE_FIDIVR,
INSTRUCTION_TYPE_FCOM,
INSTRUCTION_TYPE_FCOMP,
INSTRUCTION_TYPE_FCOMPP,
INSTRUCTION_TYPE_FCOMI,
INSTRUCTION_TYPE_FCOMIP,
INSTRUCTION_TYPE_FUCOM,
INSTRUCTION_TYPE_FUCOMP,
INSTRUCTION_TYPE_FUCOMPP,
INSTRUCTION_TYPE_FUCOMI,
INSTRUCTION_TYPE_FUCOMIP,
INSTRUCTION_TYPE_FST,
INSTRUCTION_TYPE_FSTP,
INSTRUCTION_TYPE_FIST,
INSTRUCTION_TYPE_FISTP,
INSTRUCTION_TYPE_FISTTP,
INSTRUCTION_TYPE_FLD,
INSTRUCTION_TYPE_FILD,
INSTRUCTION_TYPE_FICOM,
INSTRUCTION_TYPE_FICOMP,
INSTRUCTION_TYPE_FFREE,
INSTRUCTION_TYPE_FFREEP,
INSTRUCTION_TYPE_FXCH,
INSTRUCTION_TYPE_FPU,
INSTRUCTION_TYPE_MMX,
INSTRUCTION_TYPE_SSE,
INSTRUCTION_TYPE_OTHER,
INSTRUCTION_TYPE_PRIV
} |
| enum | Operand { OPERAND_TYPE_NONE,
OPERAND_TYPE_MEMORY,
OPERAND_TYPE_REGISTER,
OPERAND_TYPE_IMMEDIATE
} |
Functions |
| int | get_instruction (INSTRUCTION *inst, BYTE *addr, enum Mode mode) |
| int | get_instruction_string (INSTRUCTION *inst, enum Format format, DWORD offset, char *string, int length) |
| int | get_mnemonic_string (INSTRUCTION *inst, enum Format format, char *string, int length) |
| int | get_operand_string (INSTRUCTION *inst, POPERAND op, enum Format format, DWORD offset, char *string, int length) |
| int | get_register_type (POPERAND op) |
| int | get_operand_type (POPERAND op) |
| int | get_operand_register (POPERAND op) |
| int | get_operand_basereg (POPERAND op) |
| int | get_operand_indexreg (POPERAND op) |
| int | get_operand_scale (POPERAND op) |
| int | get_operand_immediate (POPERAND op, DWORD *imm) |
| int | get_operand_displacement (POPERAND op, DWORD *disp) |
| POPERAND | get_source_operand (PINSTRUCTION inst) |
| POPERAND | get_destination_operand (PINSTRUCTION inst) |