Zydis
master
|
Main structure consumed by the encoder. More...
#include <Encoder.h>
Data Structures | |
struct | ZydisEncoderRequestEvexFeatures_ |
Extended info for EVEX instructions. More... | |
struct | ZydisEncoderRequestMvexFeatures_ |
Extended info for MVEX instructions. More... | |
Data Fields | |
ZydisMachineMode | machine_mode |
The machine mode used to encode this instruction. More... | |
ZydisEncodableEncoding | allowed_encodings |
This optional field can be used to restrict allowed physical encodings for desired instruction. More... | |
ZydisMnemonic | mnemonic |
The instruction-mnemonic. More... | |
ZydisInstructionAttributes | prefixes |
A combination of requested encodable prefixes (ZYDIS_ATTRIB_HAS_* flags) for desired instruction. More... | |
ZydisBranchType | branch_type |
Branch type (required for branching instructions only). More... | |
ZydisBranchWidth | branch_width |
Specifies physical size for relative immediate operands. More... | |
ZydisAddressSizeHint | address_size_hint |
Optional address size hint used to resolve ambiguities for some instructions. More... | |
ZydisOperandSizeHint | operand_size_hint |
Optional operand size hint used to resolve ambiguities for some instructions. More... | |
ZyanU8 | operand_count |
The number of visible (explicit) instruction operands. More... | |
ZydisEncoderOperand | operands [ZYDIS_ENCODER_MAX_OPERANDS] |
Detailed info for all explicit and implicit instruction operands. More... | |
struct ZydisEncoderRequest_::ZydisEncoderRequestEvexFeatures_ | evex |
struct ZydisEncoderRequest_::ZydisEncoderRequestMvexFeatures_ | mvex |
Main structure consumed by the encoder.
It represents full semantics of an instruction.
ZydisAddressSizeHint address_size_hint |
Optional address size hint used to resolve ambiguities for some instructions.
Generally encoder deduces address size from ZydisEncoderOperand
structures that represent explicit and implicit operands. This hint resolves conflicts when instruction's hidden operands scale with address size attribute.
This hint is also used for instructions with absolute memory addresses (memory operands with displacement and no registers). Since displacement field is a 64-bit signed integer it's not possible to determine actual size of the address value in all situations. This hint specifies size of the address value provided inside encoder request rather than desired address size attribute of encoded instruction. Use ZYDIS_ADDRESS_SIZE_HINT_NONE
to assume address size default for specified machine mode.
ZydisEncodableEncoding allowed_encodings |
This optional field can be used to restrict allowed physical encodings for desired instruction.
Some mnemonics can be supported by more than one encoding, so this field can resolve ambiguities e.g. you can disable AVX-512
extensions by prohibiting usage of EVEX
prefix and allow only VEX
variants.
ZydisBranchType branch_type |
Branch type (required for branching instructions only).
Use ZYDIS_BRANCH_TYPE_NONE
to let encoder pick size-optimal branch type automatically (short
and near
are prioritized over far
).
ZydisBranchWidth branch_width |
Specifies physical size for relative immediate operands.
Use ZYDIS_BRANCH_WIDTH_NONE
to let encoder pick size-optimal branch width automatically. For segment:offset far
branches this field applies to physical size of the offset part. For branching instructions without relative operands this field affects effective operand size attribute.
ZydisMachineMode machine_mode |
The machine mode used to encode this instruction.
ZydisMnemonic mnemonic |
The instruction-mnemonic.
ZyanU8 operand_count |
The number of visible (explicit) instruction operands.
The encoder does not care about hidden (implicit) operands.
ZydisOperandSizeHint operand_size_hint |
Optional operand size hint used to resolve ambiguities for some instructions.
Generally encoder deduces operand size from ZydisEncoderOperand
structures that represent explicit and implicit operands. This hint resolves conflicts when instruction's hidden operands scale with operand size attribute.
Detailed info for all explicit and implicit instruction operands.
ZydisInstructionAttributes prefixes |
A combination of requested encodable prefixes (ZYDIS_ATTRIB_HAS_*
flags) for desired instruction.
See ZYDIS_ENCODABLE_PREFIXES
for list of available prefixes.