t_cmdinfo

Keeps basic information about the 80x86 command extracted by Cmdinfo().

typedef struct t_cmdinfo {             // Information on command
  ulong          ip;                   // Address of first command byte
  ulong          size;                 // Full length of command, bytes
  ulong          cmdtype;              // Type of command, D_xxx
  ulong          prefixes;             // List of prefixes, set of PF_xxx
  ulong          nprefix;              // Number of prefixes, including SSE2
  ulong          memfixup;             // Offset of first 4-byte fixup or -1
  ulong          immfixup;             // Offset of second 4-byte fixup or -1
  int            errors;               // Set of DAE_xxx
  ulong          jmpaddr;              // Jump/call destination or 0
  ulong          stackinc;             // Data size in ENTER/RETN/RETF
  t_opinfo       op[NOPERAND];         // Operands
} t_cmdinfo;



Members:

ip
Address of the command, repeats parameter cmdip in the call to Cmdinfo()
size
Length of the command, bytes
cmdtype
Type of the command as a combination of flags D_xxx
prefixes
List of prefixes in the command as a combination of flags PF_xxx
nprefix
Number of prefixes in the command, including SSE prefixes 0x66, 0xF2 and 0xF3. Note that OllyDbg treats code 0x0F as part of the command
memfixup
Offset of the first possible 4-byte fixup (memory offset) within the command or 0xFFFFFFFF if none
immfixup
Offset of the second possible 4-byte fixup (immediate constant) within the command or 0xFFFFFFFF if none
errors
List of detected errors, or DAE_NOERR if no errors were detected. Several flags may be set at once:
DAE_BADCMD - unknown or unrecognized command
DAE_CROSS - command is longer than memory block passed to Disasm()
DAE_MEMORY - command specifies register where only memory is allowed
DAE_BADSEG - invalid segment register
DAE_SAMEPREF - two explicit prefixes from the same group are specified simultaneously
DAE_MANYPREF - command contains more than 4 prefixes
DAE_INTERN - internal error
Note that some errors remain unnoticed by
Cmdinfo() 
jmpaddr
If command is jump or call and its destination is known or can be calculated, jmpaddr is set to the destination address. Otherwise, it's 0. It may be necessary to supply registers and/or allow memory access by setting flag DA_MEMORY
stackinc
Data size, bytes, specified in commands ENTER, RETN and RETF
op
Descriptions of operands, includes implicit operands (pseudooperands). See t_opinfo for details


See also:
Assembling and disassembling, t_cmdinfo, t_disasm, t_opinfoDisasm()