pub struct OpMem {Show 20 fields
pub has_broadcast: bool,
pub is_rip_rel: bool,
pub is_stack: bool,
pub is_string: bool,
pub is_direct: bool,
pub is_bitbase: bool,
pub is_ag: bool,
pub is_mib: bool,
pub is_sib_mem: bool,
pub seg: Option<u8>,
pub base: Option<u8>,
pub base_size: Option<u32>,
pub index: Option<u8>,
pub index_size: Option<u32>,
pub vsib: Option<Vsib>,
pub scale: Option<u8>,
pub disp: Option<u64>,
pub disp_size: Option<u8>,
pub comp_disp_size: Option<u8>,
pub shadow_stack_access: Option<ShadowStackAccess>,
}
Expand description
Describes a memory operand.
Fields§
§has_broadcast: bool
true
if the memory operand is a broadcast operand.
is_rip_rel: bool
true
if this is a rip-relative addressing. Base, Index, Scale are all ignored.
is_stack: bool
§is_string: bool
true
for [RSI]
and [RDI]
operands inside string operations.
is_direct: bool
true
if direct addressing (MOV [...], EAX, 0xA3
).
is_bitbase: bool
true
if this is a bit base. Used for BT*
instructions.
The bitbase stored in the second operand must be added to the linear address.
is_ag: bool
true
if the memory operand is address generation and no memory access is made.
is_mib: bool
true
MIB addressing is used (MPX instructions).
is_sib_mem: bool
true
the addressing uses sibmem (AMX instructions).
seg: Option<u8>
Base segment used to address the memory.
base: Option<u8>
Base register.
base_size: Option<u32>
Base register size, in bytes. Max 8 bytes.
index: Option<u8>
Index register. Can be a vector reg (ZMM0-ZMM31).
index_size: Option<u32>
Index register size, in bytes. Max 8 bytes.
vsib: Option<Vsib>
The index
register selects a vector register.
scale: Option<u8>
Scale: 1, 2, 4 or 8. Always present if index
is present.
disp: Option<u64>
Sign extended displacement.
disp_size: Option<u8>
Displacement size. Max 4 bytes.
comp_disp_size: Option<u8>
Compressed displacement size - 1, 2, 4, 8, 16, 32, 64.
shadow_stack_access: Option<ShadowStackAccess>
Shadow stack access type.
Will be None
if the shadow stack is not accessed.