Enum iced_x86::MemorySize [−][src]
#[non_exhaustive]
pub enum MemorySize {
Show 160 variants
Unknown,
UInt8,
UInt16,
UInt32,
UInt52,
UInt64,
UInt128,
UInt256,
UInt512,
Int8,
Int16,
Int32,
Int64,
Int128,
Int256,
Int512,
SegPtr16,
SegPtr32,
SegPtr64,
WordOffset,
DwordOffset,
QwordOffset,
Bound16_WordWord,
Bound32_DwordDword,
Bnd32,
Bnd64,
Fword6,
Fword10,
Float16,
Float32,
Float64,
Float80,
Float128,
BFloat16,
FpuEnv14,
FpuEnv28,
FpuState94,
FpuState108,
Fxsave_512Byte,
Fxsave64_512Byte,
Xsave,
Xsave64,
Bcd,
Tilecfg,
Tile,
SegmentDescSelector,
KLHandleAes128,
KLHandleAes256,
Packed16_UInt8,
Packed16_Int8,
Packed32_UInt8,
Packed32_Int8,
Packed32_UInt16,
Packed32_Int16,
Packed32_Float16,
Packed32_BFloat16,
Packed64_UInt8,
Packed64_Int8,
Packed64_UInt16,
Packed64_Int16,
Packed64_UInt32,
Packed64_Int32,
Packed64_Float16,
Packed64_Float32,
Packed128_UInt8,
Packed128_Int8,
Packed128_UInt16,
Packed128_Int16,
Packed128_UInt32,
Packed128_Int32,
Packed128_UInt52,
Packed128_UInt64,
Packed128_Int64,
Packed128_Float16,
Packed128_Float32,
Packed128_Float64,
Packed128_2xFloat16,
Packed128_2xBFloat16,
Packed256_UInt8,
Packed256_Int8,
Packed256_UInt16,
Packed256_Int16,
Packed256_UInt32,
Packed256_Int32,
Packed256_UInt52,
Packed256_UInt64,
Packed256_Int64,
Packed256_UInt128,
Packed256_Int128,
Packed256_Float16,
Packed256_Float32,
Packed256_Float64,
Packed256_Float128,
Packed256_2xFloat16,
Packed256_2xBFloat16,
Packed512_UInt8,
Packed512_Int8,
Packed512_UInt16,
Packed512_Int16,
Packed512_UInt32,
Packed512_Int32,
Packed512_UInt52,
Packed512_UInt64,
Packed512_Int64,
Packed512_UInt128,
Packed512_Float16,
Packed512_Float32,
Packed512_Float64,
Packed512_2xFloat16,
Packed512_2xBFloat16,
Broadcast32_Float16,
Broadcast64_UInt32,
Broadcast64_Int32,
Broadcast64_Float16,
Broadcast64_Float32,
Broadcast128_Int16,
Broadcast128_UInt16,
Broadcast128_UInt32,
Broadcast128_Int32,
Broadcast128_UInt52,
Broadcast128_UInt64,
Broadcast128_Int64,
Broadcast128_Float16,
Broadcast128_Float32,
Broadcast128_Float64,
Broadcast128_2xInt16,
Broadcast128_2xInt32,
Broadcast128_2xUInt32,
Broadcast128_2xFloat16,
Broadcast128_2xBFloat16,
Broadcast256_Int16,
Broadcast256_UInt16,
Broadcast256_UInt32,
Broadcast256_Int32,
Broadcast256_UInt52,
Broadcast256_UInt64,
Broadcast256_Int64,
Broadcast256_Float16,
Broadcast256_Float32,
Broadcast256_Float64,
Broadcast256_2xInt16,
Broadcast256_2xInt32,
Broadcast256_2xUInt32,
Broadcast256_2xFloat16,
Broadcast256_2xBFloat16,
Broadcast512_Int16,
Broadcast512_UInt16,
Broadcast512_UInt32,
Broadcast512_Int32,
Broadcast512_UInt52,
Broadcast512_UInt64,
Broadcast512_Int64,
Broadcast512_Float16,
Broadcast512_Float32,
Broadcast512_Float64,
Broadcast512_2xFloat16,
Broadcast512_2xInt16,
Broadcast512_2xUInt32,
Broadcast512_2xInt32,
Broadcast512_2xBFloat16,
}
Expand description
Size of a memory reference
Variants (Non-exhaustive)
This enum is marked as non-exhaustive
Unknown size or the instruction doesn’t reference any memory (eg. LEA
)
Memory location contains a u8
Memory location contains a u16
Memory location contains a u32
Memory location contains a u52
Memory location contains a u64
Memory location contains a u128
Memory location contains a u256
Memory location contains a u512
Memory location contains a i8
Memory location contains a i16
Memory location contains a i32
Memory location contains a i64
Memory location contains a i128
Memory location contains a i256
Memory location contains a i512
Memory location contains a seg:ptr pair, u16
(offset) + u16
(segment/selector)
Memory location contains a seg:ptr pair, u32
(offset) + u16
(segment/selector)
Memory location contains a seg:ptr pair, u64
(offset) + u16
(segment/selector)
Memory location contains a 16-bit offset (JMP/CALL WORD PTR [mem]
)
Memory location contains a 32-bit offset (JMP/CALL DWORD PTR [mem]
)
Memory location contains a 64-bit offset (JMP/CALL QWORD PTR [mem]
)
Memory location contains two u16
s (16-bit BOUND
)
Memory location contains two u32
s (32-bit BOUND
)
32-bit BNDMOV
, 2 x u32
64-bit BNDMOV
, 2 x u64
Memory location contains a 16-bit limit and a 32-bit address (eg. LGDTW
, LGDTD
)
Memory location contains a 16-bit limit and a 64-bit address (eg. LGDTQ
)
Memory location contains a f16
Memory location contains a f32
Memory location contains a f64
Memory location contains a f80
Memory location contains a f128
Memory location contains a bfloat16
Memory location contains a 14-byte FPU environment (16-bit FLDENV
/FSTENV
)
Memory location contains a 28-byte FPU environment (32/64-bit FLDENV
/FSTENV
)
Memory location contains a 94-byte FPU environment (16-bit FSAVE
/FRSTOR
)
Memory location contains a 108-byte FPU environment (32/64-bit FSAVE
/FRSTOR
)
Memory location contains 512-bytes of FXSAVE
/FXRSTOR
data
Memory location contains 512-bytes of FXSAVE64
/FXRSTOR64
data
32-bit XSAVE
area
64-bit XSAVE
area
Memory location contains a 10-byte bcd
value (FBLD
/FBSTP
)
64-bit location: TILECFG (LDTILECFG
/STTILECFG
)
Tile data
80-bit segment descriptor and selector: 0-7 = descriptor, 8-9 = selector
384-bit AES 128 handle (Key Locker)
512-bit AES 256 handle (Key Locker)
16-bit location: 2 x u8
16-bit location: 2 x i8
32-bit location: 4 x u8
32-bit location: 4 x i8
32-bit location: 2 x u16
32-bit location: 2 x i16
32-bit location: 2 x f16
32-bit location: 2 x bfloat16
64-bit location: 8 x u8
64-bit location: 8 x i8
64-bit location: 4 x u16
64-bit location: 4 x i16
64-bit location: 2 x u32
64-bit location: 2 x i32
64-bit location: 4 x f16
64-bit location: 2 x f32
128-bit location: 16 x u8
128-bit location: 16 x i8
128-bit location: 8 x u16
128-bit location: 8 x i16
128-bit location: 4 x u32
128-bit location: 4 x i32
128-bit location: 2 x u52
128-bit location: 2 x u64
128-bit location: 2 x i64
128-bit location: 8 x f16
128-bit location: 4 x f32
128-bit location: 2 x f64
128-bit location: 4 x (2 x f16
)
128-bit location: 4 x (2 x bfloat16
)
256-bit location: 32 x u8
256-bit location: 32 x i8
256-bit location: 16 x u16
256-bit location: 16 x i16
256-bit location: 8 x u32
256-bit location: 8 x i32
256-bit location: 4 x u52
256-bit location: 4 x u64
256-bit location: 4 x i64
256-bit location: 2 x u128
256-bit location: 2 x i128
256-bit location: 16 x f16
256-bit location: 8 x f32
256-bit location: 4 x f64
256-bit location: 2 x f128
256-bit location: 8 x (2 x f16
)
256-bit location: 8 x (2 x bfloat16
)
512-bit location: 64 x u8
512-bit location: 64 x i8
512-bit location: 32 x u16
512-bit location: 32 x i16
512-bit location: 16 x u32
512-bit location: 16 x i32
512-bit location: 8 x u52
512-bit location: 8 x u64
512-bit location: 8 x i64
256-bit location: 4 x u128
512-bit location: 32 x f16
512-bit location: 16 x f32
512-bit location: 8 x f64
512-bit location: 16 x (2 x f16
)
512-bit location: 16 x (2 x bfloat16
)
Broadcast f16
to 32-bits
Broadcast u32
to 64-bits
Broadcast i32
to 64-bits
Broadcast f16
to 64-bits
Broadcast f32
to 64-bits
Broadcast i16
to 128-bits
Broadcast u16
to 128-bits
Broadcast u32
to 128-bits
Broadcast i32
to 128-bits
Broadcast u52
to 128-bits
Broadcast u64
to 128-bits
Broadcast i64
to 128-bits
Broadcast f16
to 128-bits
Broadcast f32
to 128-bits
Broadcast f64
to 128-bits
Broadcast 2 x i16
to 128-bits
Broadcast 2 x i32
to 128-bits
Broadcast 2 x u32
to 128-bits
Broadcast 2 x f16
to 128-bits
Broadcast 2 x bfloat16
to 128-bits
Broadcast i16
to 256-bits
Broadcast u16
to 256-bits
Broadcast u32
to 256-bits
Broadcast i32
to 256-bits
Broadcast u52
to 256-bits
Broadcast u64
to 256-bits
Broadcast i64
to 256-bits
Broadcast f16
to 256-bits
Broadcast f32
to 256-bits
Broadcast f64
to 256-bits
Broadcast 2 x i16
to 256-bits
Broadcast 2 x i32
to 256-bits
Broadcast 2 x u32
to 256-bits
Broadcast 2 x f16
to 256-bits
Broadcast 2 x bfloat16
to 256-bits
Broadcast i16
to 512-bits
Broadcast u16
to 512-bits
Broadcast u32
to 512-bits
Broadcast i32
to 512-bits
Broadcast u52
to 512-bits
Broadcast u64
to 512-bits
Broadcast i64
to 512-bits
Broadcast f16
to 512-bits
Broadcast f32
to 512-bits
Broadcast f64
to 512-bits
Broadcast 2 x f16
to 512-bits
Broadcast 2 x i16
to 512-bits
Broadcast 2 x u32
to 512-bits
Broadcast 2 x i32
to 512-bits
Broadcast 2 x bfloat16
to 512-bits
Implementations
pub fn values(
) -> impl Iterator<Item = MemorySize> + DoubleEndedIterator + ExactSizeIterator + FusedIterator
pub fn values(
) -> impl Iterator<Item = MemorySize> + DoubleEndedIterator + ExactSizeIterator + FusedIterator
Iterates over all MemorySize
enum values
Gets the memory size info
Examples
use iced_x86::*;
let info = MemorySize::Packed256_UInt16.info();
assert_eq!(info.size(), 32);
Gets the size in bytes of the memory location or 0 if it’s not accessed by the instruction or unknown or variable sized
Examples
use iced_x86::*;
assert_eq!(MemorySize::UInt32.size(), 4);
assert_eq!(MemorySize::Packed256_UInt16.size(), 32);
assert_eq!(MemorySize::Broadcast512_UInt64.size(), 8);
Gets the element type if it’s packed data or self
if it’s not packed data
Examples
use iced_x86::*;
assert_eq!(MemorySize::UInt32.element_type(), MemorySize::UInt32);
assert_eq!(MemorySize::Packed256_UInt16.element_type(), MemorySize::UInt16);
assert_eq!(MemorySize::Broadcast512_UInt64.element_type(), MemorySize::UInt64);
Gets the element type info if it’s packed data or self
if it’s not packed data
Examples
use iced_x86::*;
assert_eq!(MemorySize::UInt32.element_type_info().memory_size(), MemorySize::UInt32);
assert_eq!(MemorySize::Packed256_UInt16.element_type_info().memory_size(), MemorySize::UInt16);
assert_eq!(MemorySize::Broadcast512_UInt64.element_type_info().memory_size(), MemorySize::UInt64);
true
if it’s signed data (signed integer or a floating point value)
Examples
use iced_x86::*;
assert!(!MemorySize::UInt32.is_signed());
assert!(MemorySize::Int32.is_signed());
assert!(MemorySize::Float64.is_signed());
true
if this is a packed data type, eg. MemorySize::Packed128_Float32
Examples
use iced_x86::*;
assert!(!MemorySize::UInt32.is_packed());
assert!(MemorySize::Packed256_UInt16.is_packed());
assert!(!MemorySize::Broadcast512_UInt64.is_packed());
Gets the number of elements in the packed data type or 1
if it’s not packed data (is_packed()
)
Examples
use iced_x86::*;
assert_eq!(MemorySize::UInt32.element_count(), 1);
assert_eq!(MemorySize::Packed256_UInt16.element_count(), 16);
assert_eq!(MemorySize::Broadcast512_UInt64.element_count(), 1);
Checks if it is a broadcast memory type
Examples
use iced_x86::*;
assert!(!MemorySize::Packed64_Float16.is_broadcast());
assert!(MemorySize::Broadcast512_UInt64.is_broadcast());
Trait Implementations
Deserialize this value from the given Serde deserializer. Read more
This method returns an ordering between self
and other
values if one exists. Read more
This method tests less than (for self
and other
) and is used by the <
operator. Read more
This method tests less than or equal to (for self
and other
) and is used by the <=
operator. Read more
This method tests greater than (for self
and other
) and is used by the >
operator. Read more
Auto Trait Implementations
impl RefUnwindSafe for MemorySize
impl Send for MemorySize
impl Sync for MemorySize
impl Unpin for MemorySize
impl UnwindSafe for MemorySize
Blanket Implementations
Mutably borrows from an owned value. Read more