Operands
operands
Classes:
-
AccessType
–Enumeration of operand access types.
-
ImmediateOperand
–Operand representing immediate values (o_imm, o_far, o_near).
-
MemoryOperand
–Operand representing memory access (o_mem, o_phrase, o_displ).
-
Operand
–Abstract base class for all operand types.
-
OperandDataType
–Enumeration of operand data types.
-
OperandFactory
–Factory for creating appropriate operand instances.
-
OperandInfo
–Basic information about an operand.
-
OperandType
–Enumeration of operand types for easier identification.
-
ProcessorSpecificOperand
–Operand representing processor-specific types (o_idpspec0-5).
-
RegisterOperand
–Operand representing a processor register (o_reg).
AccessType
Bases: Enum
Enumeration of operand access types.
Attributes:
-
NONE
– -
READ
– -
READ_WRITE
– -
WRITE
–
NONE
class-attribute
instance-attribute
NONE = 'none'
READ
class-attribute
instance-attribute
READ = 'read'
READ_WRITE
class-attribute
instance-attribute
READ_WRITE = 'read_write'
WRITE
class-attribute
instance-attribute
WRITE = 'write'
ImmediateOperand
ImmediateOperand(
database: Database, operand: op_t, instruction_ea: ea_t
)
Bases: Operand
Operand representing immediate values (o_imm, o_far, o_near).
Methods:
-
get_access_type
–Get a string description of how this operand is accessed.
-
get_info
–Get structured information about the operand.
-
get_name
–Get the symbolic name for address operands.
-
get_value
–Get the immediate value or address.
-
has_outer_displacement
–Check if this operand has an outer displacement.
-
is_address
–Check if this is an address operand (far/near).
-
is_floating_point
–Check if this is a floating point operand.
-
is_read
–Check if this operand is read (used) by the instruction.
-
is_write
–Check if this operand is written (modified) by the instruction.
Attributes:
-
data_type
(OperandDataType
) –Get the operand data type as an enum.
-
flags
(int
) –Get the operand flags.
-
is_shown
(bool
) –Check if the operand should be displayed.
-
m_database
– -
number
(int
) –Get the operand number (0, 1, 2, etc.).
-
raw_operand
(op_t
) –Get the underlying op_t object.
-
size_bits
(int
) –Get the size of the operand in bits.
-
size_bytes
(int
) –Get the size of the operand in bytes.
-
type
(OperandType
) –Get the operand type as an enum.
flags
property
flags: int
Get the operand flags.
is_shown
property
is_shown: bool
Check if the operand should be displayed.
m_database
instance-attribute
m_database = database
number
property
number: int
Get the operand number (0, 1, 2, etc.).
raw_operand
property
raw_operand: op_t
Get the underlying op_t object.
size_bits
property
size_bits: int
Get the size of the operand in bits.
size_bytes
property
size_bytes: int
Get the size of the operand in bytes.
get_access_type
get_access_type() -> AccessType
Get a string description of how this operand is accessed.
get_name
get_name() -> Optional[str]
Get the symbolic name for address operands.
get_value
get_value() -> int
Get the immediate value or address.
has_outer_displacement
has_outer_displacement() -> bool
Check if this operand has an outer displacement.
Returns True if the OF_OUTER_DISP flag is set.
is_address
is_address() -> bool
Check if this is an address operand (far/near).
is_floating_point
is_floating_point() -> bool
Check if this is a floating point operand.
is_read
is_read() -> bool
Check if this operand is read (used) by the instruction.
is_write
is_write() -> bool
Check if this operand is written (modified) by the instruction.
MemoryOperand
MemoryOperand(
database: Database, operand: op_t, instruction_ea: ea_t
)
Bases: Operand
Operand representing memory access (o_mem, o_phrase, o_displ).
Methods:
-
get_access_type
–Get a string description of how this operand is accessed.
-
get_address
–Get the address for direct memory operands.
-
get_displacement
–Get the base displacement value.
-
get_formatted_string
–Get the formatted operand string from IDA.
-
get_info
–Get structured information about the operand.
-
get_name
–Get the symbolic name for direct memory operands.
-
get_outer_displacement
–Get the outer displacement value for complex addressing modes.
-
get_phrase_number
–Get the phrase number for register-based operands.
-
get_value
–Get the primary value based on memory type.
-
has_outer_displacement
–Check if this operand has an outer displacement.
-
is_direct_memory
–Check if this is direct memory access.
-
is_floating_point
–Check if this is a floating point operand.
-
is_read
–Check if this operand is read (used) by the instruction.
-
is_register_based
–Check if this uses register-based addressing.
-
is_write
–Check if this operand is written (modified) by the instruction.
Attributes:
-
data_type
(OperandDataType
) –Get the operand data type as an enum.
-
flags
(int
) –Get the operand flags.
-
is_shown
(bool
) –Check if the operand should be displayed.
-
m_database
– -
number
(int
) –Get the operand number (0, 1, 2, etc.).
-
raw_operand
(op_t
) –Get the underlying op_t object.
-
size_bits
(int
) –Get the size of the operand in bits.
-
size_bytes
(int
) –Get the size of the operand in bytes.
-
type
(OperandType
) –Get the operand type as an enum.
flags
property
flags: int
Get the operand flags.
is_shown
property
is_shown: bool
Check if the operand should be displayed.
m_database
instance-attribute
m_database = database
number
property
number: int
Get the operand number (0, 1, 2, etc.).
raw_operand
property
raw_operand: op_t
Get the underlying op_t object.
size_bits
property
size_bits: int
Get the size of the operand in bits.
size_bytes
property
size_bytes: int
Get the size of the operand in bytes.
get_access_type
get_access_type() -> AccessType
Get a string description of how this operand is accessed.
get_address
get_address() -> Optional[ea_t]
Get the address for direct memory operands.
get_displacement
get_displacement() -> Optional[int]
Get the base displacement value.
This is the primary displacement used in addressing modes like [reg + disp]. Stored in op_t.addr field.
get_formatted_string
get_formatted_string() -> Optional[str]
Get the formatted operand string from IDA.
get_name
get_name() -> Optional[str]
Get the symbolic name for direct memory operands.
get_outer_displacement
get_outer_displacement() -> Optional[int]
Get the outer displacement value for complex addressing modes.
Only present when OF_OUTER_DISP flag is set. Stored in op_t.value field.
get_phrase_number
get_phrase_number() -> Optional[int]
Get the phrase number for register-based operands.
get_value
get_value() -> Any
Get the primary value based on memory type.
has_outer_displacement
has_outer_displacement() -> bool
Check if this operand has an outer displacement.
Returns True if the OF_OUTER_DISP flag is set.
is_direct_memory
is_direct_memory() -> bool
Check if this is direct memory access.
is_floating_point
is_floating_point() -> bool
Check if this is a floating point operand.
is_read
is_read() -> bool
Check if this operand is read (used) by the instruction.
is_register_based
is_register_based() -> bool
Check if this uses register-based addressing.
is_write
is_write() -> bool
Check if this operand is written (modified) by the instruction.
Operand
Operand(
database: Database, operand: op_t, instruction_ea: ea_t
)
Bases: ABC
Abstract base class for all operand types.
Methods:
-
get_access_type
–Get a string description of how this operand is accessed.
-
get_info
–Get structured information about the operand.
-
get_value
–Get the primary value of the operand.
-
is_floating_point
–Check if this is a floating point operand.
-
is_read
–Check if this operand is read (used) by the instruction.
-
is_write
–Check if this operand is written (modified) by the instruction.
Attributes:
-
data_type
(OperandDataType
) –Get the operand data type as an enum.
-
flags
(int
) –Get the operand flags.
-
is_shown
(bool
) –Check if the operand should be displayed.
-
m_database
– -
number
(int
) –Get the operand number (0, 1, 2, etc.).
-
raw_operand
(op_t
) –Get the underlying op_t object.
-
size_bits
(int
) –Get the size of the operand in bits.
-
size_bytes
(int
) –Get the size of the operand in bytes.
-
type
(OperandType
) –Get the operand type as an enum.
flags
property
flags: int
Get the operand flags.
is_shown
property
is_shown: bool
Check if the operand should be displayed.
m_database
instance-attribute
m_database = database
number
property
number: int
Get the operand number (0, 1, 2, etc.).
raw_operand
property
raw_operand: op_t
Get the underlying op_t object.
size_bits
property
size_bits: int
Get the size of the operand in bits.
size_bytes
property
size_bytes: int
Get the size of the operand in bytes.
get_access_type
get_access_type() -> AccessType
Get a string description of how this operand is accessed.
get_value
abstractmethod
get_value() -> Any
Get the primary value of the operand.
is_floating_point
is_floating_point() -> bool
Check if this is a floating point operand.
is_read
is_read() -> bool
Check if this operand is read (used) by the instruction.
is_write
is_write() -> bool
Check if this operand is written (modified) by the instruction.
OperandDataType
Bases: IntEnum
Enumeration of operand data types.
Attributes:
-
BITFIELD
– -
BYTE
– -
BYTE16
– -
BYTE32
– -
BYTE64
– -
CODE
– -
DOUBLE
– -
DWORD
– -
FLOAT
– -
FWORD
– -
HALF
– -
LDBL
– -
PACKREAL
– -
QWORD
– -
STRING
– -
TBYTE
– -
UNICODE
– -
VOID
– -
WORD
–
BITFIELD
class-attribute
instance-attribute
BITFIELD = dt_bitfild
BYTE
class-attribute
instance-attribute
BYTE = dt_byte
BYTE16
class-attribute
instance-attribute
BYTE16 = dt_byte16
BYTE32
class-attribute
instance-attribute
BYTE32 = dt_byte32
BYTE64
class-attribute
instance-attribute
BYTE64 = dt_byte64
CODE
class-attribute
instance-attribute
CODE = dt_code
DOUBLE
class-attribute
instance-attribute
DOUBLE = dt_double
DWORD
class-attribute
instance-attribute
DWORD = dt_dword
FLOAT
class-attribute
instance-attribute
FLOAT = dt_float
FWORD
class-attribute
instance-attribute
FWORD = dt_fword
HALF
class-attribute
instance-attribute
HALF = dt_half
LDBL
class-attribute
instance-attribute
LDBL = dt_ldbl
PACKREAL
class-attribute
instance-attribute
PACKREAL = dt_packreal
QWORD
class-attribute
instance-attribute
QWORD = dt_qword
STRING
class-attribute
instance-attribute
STRING = dt_string
TBYTE
class-attribute
instance-attribute
TBYTE = dt_tbyte
UNICODE
class-attribute
instance-attribute
UNICODE = dt_unicode
VOID
class-attribute
instance-attribute
VOID = dt_void
WORD
class-attribute
instance-attribute
WORD = dt_word
OperandFactory
OperandInfo
dataclass
OperandInfo(
number: int,
type: OperandType,
data_type: OperandDataType,
access_type: AccessType,
size_bytes: int,
size_bits: int,
flags: int,
is_hidden: bool,
is_floating_point: bool,
)
Basic information about an operand.
Attributes:
-
access_type
(AccessType
) – -
data_type
(OperandDataType
) – -
flags
(int
) – -
is_floating_point
(bool
) – -
is_hidden
(bool
) – -
number
(int
) – -
size_bits
(int
) – -
size_bytes
(int
) – -
type
(OperandType
) –
flags
instance-attribute
flags: int
is_floating_point
instance-attribute
is_floating_point: bool
is_hidden
instance-attribute
is_hidden: bool
number
instance-attribute
number: int
size_bits
instance-attribute
size_bits: int
size_bytes
instance-attribute
size_bytes: int
OperandType
Bases: IntEnum
Enumeration of operand types for easier identification.
Attributes:
-
DISPLACEMENT
– -
FAR_ADDRESS
– -
IMMEDIATE
– -
MEMORY
– -
NEAR_ADDRESS
– -
PHRASE
– -
PROCESSOR_SPECIFIC_0
– -
PROCESSOR_SPECIFIC_1
– -
PROCESSOR_SPECIFIC_2
– -
PROCESSOR_SPECIFIC_3
– -
PROCESSOR_SPECIFIC_4
– -
PROCESSOR_SPECIFIC_5
– -
REGISTER
– -
VOID
–
DISPLACEMENT
class-attribute
instance-attribute
DISPLACEMENT = o_displ
FAR_ADDRESS
class-attribute
instance-attribute
FAR_ADDRESS = o_far
IMMEDIATE
class-attribute
instance-attribute
IMMEDIATE = o_imm
MEMORY
class-attribute
instance-attribute
MEMORY = o_mem
NEAR_ADDRESS
class-attribute
instance-attribute
NEAR_ADDRESS = o_near
PHRASE
class-attribute
instance-attribute
PHRASE = o_phrase
PROCESSOR_SPECIFIC_0
class-attribute
instance-attribute
PROCESSOR_SPECIFIC_0 = o_idpspec0
PROCESSOR_SPECIFIC_1
class-attribute
instance-attribute
PROCESSOR_SPECIFIC_1 = o_idpspec1
PROCESSOR_SPECIFIC_2
class-attribute
instance-attribute
PROCESSOR_SPECIFIC_2 = o_idpspec2
PROCESSOR_SPECIFIC_3
class-attribute
instance-attribute
PROCESSOR_SPECIFIC_3 = o_idpspec3
PROCESSOR_SPECIFIC_4
class-attribute
instance-attribute
PROCESSOR_SPECIFIC_4 = o_idpspec4
PROCESSOR_SPECIFIC_5
class-attribute
instance-attribute
PROCESSOR_SPECIFIC_5 = o_idpspec5
REGISTER
class-attribute
instance-attribute
REGISTER = o_reg
VOID
class-attribute
instance-attribute
VOID = o_void
ProcessorSpecificOperand
ProcessorSpecificOperand(
database: Database, operand: op_t, instruction_ea: int
)
Bases: Operand
Operand representing processor-specific types (o_idpspec0-5).
Methods:
-
get_access_type
–Get a string description of how this operand is accessed.
-
get_info
–Get structured information about the operand.
-
get_spec_type
–Get the processor-specific type number (0-5).
-
get_value
–Return raw value for processor-specific operands.
-
is_floating_point
–Check if this is a floating point operand.
-
is_read
–Check if this operand is read (used) by the instruction.
-
is_write
–Check if this operand is written (modified) by the instruction.
Attributes:
-
data_type
(OperandDataType
) –Get the operand data type as an enum.
-
flags
(int
) –Get the operand flags.
-
is_shown
(bool
) –Check if the operand should be displayed.
-
m_database
– -
number
(int
) –Get the operand number (0, 1, 2, etc.).
-
raw_operand
(op_t
) –Get the underlying op_t object.
-
size_bits
(int
) –Get the size of the operand in bits.
-
size_bytes
(int
) –Get the size of the operand in bytes.
-
type
(OperandType
) –Get the operand type as an enum.
flags
property
flags: int
Get the operand flags.
is_shown
property
is_shown: bool
Check if the operand should be displayed.
m_database
instance-attribute
m_database = database
number
property
number: int
Get the operand number (0, 1, 2, etc.).
raw_operand
property
raw_operand: op_t
Get the underlying op_t object.
size_bits
property
size_bits: int
Get the size of the operand in bits.
size_bytes
property
size_bytes: int
Get the size of the operand in bytes.
get_access_type
get_access_type() -> AccessType
Get a string description of how this operand is accessed.
get_spec_type
get_spec_type() -> int
Get the processor-specific type number (0-5).
get_value
get_value() -> Any
Return raw value for processor-specific operands.
is_floating_point
is_floating_point() -> bool
Check if this is a floating point operand.
is_read
is_read() -> bool
Check if this operand is read (used) by the instruction.
is_write
is_write() -> bool
Check if this operand is written (modified) by the instruction.
RegisterOperand
RegisterOperand(
database: Database, operand: op_t, instruction_ea: ea_t
)
Bases: Operand
Operand representing a processor register (o_reg).
Methods:
-
get_access_type
–Get a string description of how this operand is accessed.
-
get_info
–Get structured information about the operand.
-
get_register_name
–Get the name of this register using the operand's size.
-
get_value
– -
is_floating_point
–Check if this is a floating point operand.
-
is_read
–Check if this operand is read (used) by the instruction.
-
is_write
–Check if this operand is written (modified) by the instruction.
Attributes:
-
data_type
(OperandDataType
) –Get the operand data type as an enum.
-
flags
(int
) –Get the operand flags.
-
is_shown
(bool
) –Check if the operand should be displayed.
-
m_database
– -
number
(int
) –Get the operand number (0, 1, 2, etc.).
-
raw_operand
(op_t
) –Get the underlying op_t object.
-
register_number
(int
) –Get the register number.
-
size_bits
(int
) –Get the size of the operand in bits.
-
size_bytes
(int
) –Get the size of the operand in bytes.
-
type
(OperandType
) –Get the operand type as an enum.
flags
property
flags: int
Get the operand flags.
is_shown
property
is_shown: bool
Check if the operand should be displayed.
m_database
instance-attribute
m_database = database
number
property
number: int
Get the operand number (0, 1, 2, etc.).
raw_operand
property
raw_operand: op_t
Get the underlying op_t object.
register_number
property
register_number: int
Get the register number.
size_bits
property
size_bits: int
Get the size of the operand in bits.
size_bytes
property
size_bytes: int
Get the size of the operand in bytes.
get_access_type
get_access_type() -> AccessType
Get a string description of how this operand is accessed.
get_register_name
get_register_name() -> str
Get the name of this register using the operand's size.
get_value
get_value() -> int
is_floating_point
is_floating_point() -> bool
Check if this is a floating point operand.
is_read
is_read() -> bool
Check if this operand is read (used) by the instruction.
is_write
is_write() -> bool
Check if this operand is written (modified) by the instruction.