IndexInstruction DBasmjit::OpRWInfo

asmjit::OpRWInfo Struct Reference [¶]

Read/Write information related to a single operand, used by InstRWInfo.

Public Members

Members

Member Functions

Reset

Operand Flags

Memory Flags

Physical Register ID

Reg/Mem Information

Read & Write Masks

void OpRWInfo::reset()noexcept[1/2][¶]

Resets this operand information to all zeros.

void OpRWInfo::reset(
OpRWFlags op_flags,
uint32_t register_size,
uint32_t phys_id = Reg::kIdBad
)noexcept[2/2][¶]

Resets this operand info (resets all members) and set common information to the given op_flags, register_size, and possibly phys_id.

OpRWFlags OpRWInfo::op_flags() constnodiscardnoexcept[¶]

Returns operand flags.

bool OpRWInfo::has_op_flag() constnodiscardnoexcept[¶]

Tests whether operand flags contain the given flag.

void OpRWInfo::add_op_flags()noexcept[¶]

Adds the given flags to operand flags.

void OpRWInfo::clear_op_flags()noexcept[¶]

Removes the given flags from operand flags.

bool OpRWInfo::is_read() constnodiscardnoexcept[¶]

Tests whether this operand is read from.

bool OpRWInfo::is_write() constnodiscardnoexcept[¶]

Tests whether this operand is written to.

bool OpRWInfo::is_read_write() constnodiscardnoexcept[¶]

Tests whether this operand is both read and write.

bool OpRWInfo::is_read_only() constnodiscardnoexcept[¶]

Tests whether this operand is read only.

bool OpRWInfo::is_write_only() constnodiscardnoexcept[¶]

Tests whether this operand is write only.

uint32_t OpRWInfo::consecutive_lead_count() constnodiscardnoexcept[¶]

Returns the type of a lead register, which is followed by consecutive registers.

bool OpRWInfo::is_rm() constnodiscardnoexcept[¶]

Tests whether this operand is Reg/Mem

Reg/Mem operands can use either register or memory.

bool OpRWInfo::is_zext() constnodiscardnoexcept[¶]

Tests whether the operand will be zero extended.

bool OpRWInfo::is_unique() constnodiscardnoexcept[¶]

Tests whether the operand must have allocated a unique physical id that cannot be shared with other register operands.

bool OpRWInfo::is_mem_fake() constnodiscardnoexcept[¶]

Tests whether this is a fake memory operand, which is only used, because of encoding. Fake memory operands do not access any memory, they are only used to encode registers.

bool OpRWInfo::is_mem_base_used() constnodiscardnoexcept[¶]

Tests whether the instruction's memory BASE register is used.

bool OpRWInfo::is_mem_base_read() constnodiscardnoexcept[¶]

Tests whether the instruction reads from its BASE registers.

bool OpRWInfo::is_mem_base_write() constnodiscardnoexcept[¶]

Tests whether the instruction writes to its BASE registers.

bool OpRWInfo::is_mem_base_read_write() constnodiscardnoexcept[¶]

Tests whether the instruction reads and writes from/to its BASE registers.

bool OpRWInfo::is_mem_base_read_only() constnodiscardnoexcept[¶]

Tests whether the instruction only reads from its BASE registers.

bool OpRWInfo::is_mem_base_write_only() constnodiscardnoexcept[¶]

Tests whether the instruction only writes to its BASE registers.

bool OpRWInfo::is_mem_base_pre_modify() constnodiscardnoexcept[¶]

Tests whether the instruction modifies the BASE register before it uses it to calculate the target address.

bool OpRWInfo::is_mem_base_post_modify() constnodiscardnoexcept[¶]

Tests whether the instruction modifies the BASE register after it uses it to calculate the target address.

bool OpRWInfo::is_mem_index_used() constnodiscardnoexcept[¶]

Tests whether the instruction's memory INDEX register is used.

bool OpRWInfo::is_mem_index_read() constnodiscardnoexcept[¶]

Tests whether the instruction reads the INDEX registers.

bool OpRWInfo::is_mem_index_write() constnodiscardnoexcept[¶]

Tests whether the instruction writes to its INDEX registers.

bool OpRWInfo::is_mem_index_read_write() constnodiscardnoexcept[¶]

Tests whether the instruction reads and writes from/to its INDEX registers.

bool OpRWInfo::is_mem_index_read_only() constnodiscardnoexcept[¶]

Tests whether the instruction only reads from its INDEX registers.

bool OpRWInfo::is_mem_index_write_only() constnodiscardnoexcept[¶]

Tests whether the instruction only writes to its INDEX registers.

uint32_t OpRWInfo::phys_id() constnodiscardnoexcept[¶]

Returns a physical id of the register that is fixed for this operand.

Returns Reg::kIdBad if any register can be used.

bool OpRWInfo::has_phys_id() constnodiscardnoexcept[¶]

Tests whether phys_id() would return a valid physical register id.

void OpRWInfo::set_phys_id(
uint32_t phys_id
)noexcept[¶]

Sets physical register id, which would be fixed for this operand.

uint32_t OpRWInfo::rm_size() constnodiscardnoexcept[¶]

Returns Reg/Mem size of the operand.

void OpRWInfo::set_rm_size(
uint32_t rm_size
)noexcept[¶]

Sets Reg/Mem size of the operand.

uint64_t OpRWInfo::read_byte_mask() constnodiscardnoexcept[¶]

Returns read mask.

void OpRWInfo::set_read_byte_mask(
uint64_t mask
)noexcept[¶]

Sets read mask.

uint64_t OpRWInfo::write_byte_mask() constnodiscardnoexcept[¶]

Returns write mask.

void OpRWInfo::set_write_byte_mask(
uint64_t mask
)noexcept[¶]

Sets write mask.

uint64_t OpRWInfo::extend_byte_mask() constnodiscardnoexcept[¶]

Returns extend mask.

void OpRWInfo::set_extend_byte_mask(
uint64_t mask
)noexcept[¶]

Sets extend mask.

OpRWFlags OpRWInfo::_op_flags[¶]

Read/Write flags.

uint8_t OpRWInfo::_phys_id[¶]

Physical register index, if required.

uint8_t OpRWInfo::_rm_size[¶]

Size of a possible memory operand that can replace a register operand.

uint8_t OpRWInfo::_consecutive_lead_count[¶]

If non-zero, then this is a consecutive lead register, and the value describes how many registers follow.

uint8_t OpRWInfo::_reserved[1][¶]

Reserved for future use.

uint64_t OpRWInfo::_read_byte_mask[¶]

Read bit-mask where each bit represents one byte read from Reg/Mem.

uint64_t OpRWInfo::_write_byte_mask[¶]

Write bit-mask where each bit represents one byte written to Reg/Mem.

uint64_t OpRWInfo::_extend_byte_mask[¶]

Zero/Sign extend bit-mask where each bit represents one byte written to Reg/Mem.