get_operand_type
Get type of instruction operand
ea - linear address of instruction
n - number of operand:
0 - the first operand
1 - the second operand
returns:
-1 bad operand number passed
long get_operand_type(long ea, long n);
#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_fpreglist o_idpspec4 // Floating point register list
#define o_text o_idpspec5 // Arbitrary text stored in the operand
#define o_cond (o_idpspec5+1) // ARM condition as an 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
Last updated