main.idc
#include <idc.idc> static main() { auto addr = 0x101248c; // cmp word ptr [eax], 5A4Dh Message("Mnem: %s\n", GetMnem(addr)); Message("Type-0: %d\n", GetOpType(addr, 0)); Message("Type-1: %d\n", GetOpType(addr, 1)); }
Type
#define o_void 0 // No Operand #define o_reg 1 // General Register (al,ax,es,ds...) reg #define o_mem 2 // Direct Memory Reference (DATA) addr #define o_phrase 3 // Memory Ref [Base Reg + Index Reg] phrase #define o_displ 4 // Memory Reg [Base Reg + Index Reg + Displacement] phrase+addr #define o_imm 5 // Immediate Value value #define o_far 6 // Immediate Far Address (CODE) addr #define o_near 7 // Immediate Near Address (CODE) addr #define o_idpspec0 8 // IDP specific type #define o_idpspec1 9 // IDP specific type #define o_idpspec2 10 // IDP specific type #define o_idpspec3 11 // IDP specific type #define o_idpspec4 12 // IDP specific type #define o_idpspec5 13 // IDP specific type // x86 #define o_trreg o_idpspec0 // trace register #define o_dbreg o_idpspec1 // debug register #define o_crreg o_idpspec2 // control register #define o_fpreg o_idpspec3 // floating point register #define o_mmxreg o_idpspec4 // mmx register #define o_xmmreg o_idpspec5 // xmm register // arm #define o_reglist o_idpspec1 // Register list (for LDM/STM) #define o_creglist o_idpspec2 // Coprocessor register list (for CDP) #define o_creg o_idpspec3 // Coprocessor register (for LDC/STC) #define o_fpreg o_idpspec4 // Floating point register #define o_fpreglist o_idpspec5 // Floating point register list #define o_text (o_idpspec5+1) // Arbitrary text stored in the operand // ppc #define o_spr o_idpspec0 // Special purpose register #define o_twofpr o_idpspec1 // Two FPRs #define o_shmbme o_idpspec2 // SH & MB & ME #define o_crf o_idpspec3 // crfield x.reg #define o_crb o_idpspec4 // crbit x.reg #define o_dcr o_idpspec5 // Device control register