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
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()
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: