fcml  1.2.2
Public Member Functions | Static Public Member Functions | List of all members
fcml::IB Class Reference

An instruction builder. More...

#include <fcml_common.hpp>

Public Member Functions

 IB (const fcml_cstring &mnemonic)
 Creates builder for the given mnemonic. More...
 
 IB (fcml_prefixes prefixes, const fcml_cstring &mnemonic)
 Creates builder for the given mnemonic and prefixes. More...
 
 IB (const fcml_cstring &mnemonic, fcml_hints hints)
 Creates an instruction builder for given mnemonic and hints. More...
 
 IB (fcml_prefixes prefixes, const fcml_cstring &mnemonic, fcml_hints hints)
 Creates an instruction builder for given prefixes, mnemonic and hints. More...
 
 operator Instruction () const
 Converts builder to the instruction instance. More...
 
Instruction build () const
 Builds an instruction instance for the current state of the builder. More...
 
void op (const Operand &operand)
 Sets a next operand for the instruction. More...
 
IBfarPtr ()
 Sets a hint described by the name of the method for the instruction being built. More...
 
IBnearPtr ()
 Sets a hint described by the name of the method for the instruction being built. More...
 
IBlongFormPtr ()
 Sets a hint described by the name of the method for the instruction being built. More...
 
IBindirectPtr ()
 Sets a hint described by the name of the method for the instruction being built. More...
 
IBdirectPtr ()
 Sets a hint described by the name of the method for the instruction being built. More...
 
IBlock ()
 Sets a prefix described by the name of the method for the instruction being built. More...
 
IBrepne ()
 Sets a prefix described by the name of the method for the instruction being built. More...
 
IBrepnz ()
 Sets a prefix described by the name of the method for the instruction being built. More...
 
IBrep ()
 Sets a prefix described by the name of the method for the instruction being built. More...
 
IBrepe ()
 Sets a prefix described by the name of the method for the instruction being built. More...
 
IBrepz ()
 Sets a prefix described by the name of the method for the instruction being built. More...
 
IBxacquire ()
 Sets a prefix described by the name of the method for the instruction being built. More...
 
IBxrelease ()
 Sets a prefix described by the name of the method for the instruction being built. More...
 
IBbranchHint ()
 Sets a prefix described by the name of the method for the instruction being built. More...
 
IBnobranchHint ()
 Sets a prefix described by the name of the method for the instruction being built. More...
 
IBoperandMultimediaHint ()
 Marks the lastly added operand as a multimedia one. More...
 
IBoperandRelativeHint ()
 Marks the lastly added address operand as a relative one. More...
 
IBoperandAbsoluteHint ()
 Marks the lastly added address operand as a absolute one. More...
 
IBoperandSIBEncodingHint ()
 Sets preferred encoding to SIB for the lastly added ModR/M operand. More...
 
IBimm (const Integer &imm)
 Adds an immediate operand. More...
 
IBfar_ptr (fcml_uint16_t seg, fcml_int16_t addr)
 Adds a far pointer operand. More...
 
IBfar_ptr (fcml_uint16_t seg, fcml_int32_t addr)
 Adds a far pointer operand. More...
 
IBfar_ptr (const FarPointer &pointer)
 Adds a far pointer operand. More...
 
IBaddr (const Address &address)
 Adds an address operand. More...
 
IBoff (const Integer &offset, fcml_usize sizeOperator=FCML_DS_UNDEF)
 Adds an offset operand. More...
 
IBoffb (const Integer &offset)
 Adds an offset based address operand with byte size operator. More...
 
IBoffw (const Integer &offset)
 Adds an offset based address operand with word size operator. More...
 
IBoffd (const Integer &offset)
 Adds an offset based address operand with double word size operator. More...
 
IBoffq (const Integer &offset)
 Adds an offset based address operand with quadro word size operator. More...
 
IBaddr (const EffectiveAddress &effectiveAddress, fcml_usize sizeOperator=FCML_DS_UNDEF)
 Adds an address type operand for given effective address and optional size operator. More...
 
IBaddrb (const EffectiveAddress &effectiveAddress)
 Adds an address type operand for given effective address and byte size operator. More...
 
IBaddrw (const EffectiveAddress &effectiveAddress)
 Adds an address type operand for given effective address and word size operator. More...
 
IBaddrd (const EffectiveAddress &effectiveAddress)
 Adds an address type operand for given effective address and double word size operator. More...
 
IBaddrq (const EffectiveAddress &effectiveAddress)
 Adds an address type operand for given effective address and quadro word size operator. More...
 
IBaddr (const EffectiveAddress &effectiveAddress, const SegmentSelector &segmentSelector, fcml_usize sizeOperator=FCML_DS_UNDEF)
 Adds an address type operand for given segment selector, effective address and optional size operator. More...
 
IBaddrb (const EffectiveAddress &effectiveAddress, const SegmentSelector &segmentSelector)
 Adds an address type operand for given effective address and byte size operator. More...
 
IBaddrw (const EffectiveAddress &effectiveAddress, const SegmentSelector &segmentSelector)
 Adds an address type operand for given effective address and byte size operator. More...
 
IBaddrd (const EffectiveAddress &effectiveAddress, const SegmentSelector &segmentSelector)
 Adds an address type operand for given effective address and double word size operator. More...
 
IBaddrq (const EffectiveAddress &effectiveAddress, const SegmentSelector &segmentSelector)
 Adds an address type operand for given effective address and quadro word size operator. More...
 
IBreg (const Register &reg)
 Adds an an register based operator for given register. More...
 
IBreg (fcml_uint8_t reg, fcml_usize size, Register::RegisterType type=Register::REG_GPR, fcml_bool x64_exp=FCML_FALSE)
 Adds an an register based operator for given parameters. More...
 
IBeff (const Integer &displacement, fcml_usize sizeOperator=FCML_DS_UNDEF)
 Adds an an effective address based operator for a displacement and optional size operator. More...
 
IBeffb (const Integer &displacement)
 Adds an an effective address based operator for a displacement and byte size operator. More...
 
IBeffw (const Integer &displacement)
 Adds an an effective address based operator for a displacement and word size operator. More...
 
IBeffd (const Integer &displacement)
 Adds an an effective address based operator for a displacement and double word size operator. More...
 
IBeffq (const Integer &displacement)
 Adds an an effective address based operator for a displacement and quadro byte size operator. More...
 
IBeff (const Register &base, fcml_usize sizeOperator=FCML_DS_UNDEF)
 Adds an an effective address based operator for a base register and optional size operator. More...
 
IBeffb (const Register &base)
 Adds an an effective address based operator for a base register and byte size operator. More...
 
IBeffw (const Register &base)
 Adds an an effective address based operator for a base register and word size operator. More...
 
IBeffd (const Register &base)
 Adds an an effective address based operator for a base register and double word size operator. More...
 
IBeffq (const Register &base)
 Adds an an effective address based operator for a base register and quadro word size operator. More...
 
IBeff (const Register &base, const Integer &displacement, fcml_usize sizeOperator=FCML_DS_UNDEF)
 Adds an an effective address based operator for a base register, displacement and optional size operator. More...
 
IBeffb (const Register &base, const Integer &displacement)
 Adds an an effective address based operator for a base register, displacement and byte size operator. More...
 
IBeffw (const Register &base, const Integer &displacement)
 Adds an an effective address based operator for a base register, displacement and word size operator. More...
 
IBeffd (const Register &base, const Integer &displacement)
 Adds an an effective address based operator for a base register, displacement and double word size operator. More...
 
IBeffq (const Register &base, const Integer &displacement)
 Adds an an effective address based operator for a base register, displacement and quadro word size operator. More...
 
IBeff (const Register &index, fcml_uint8_t scaleFactor, const Integer &displacement, fcml_usize sizeOperator=FCML_DS_UNDEF)
 Adds an an effective address based operator for an index register, scaleFactor, displacement and optional size operator. More...
 
IBeffb (const Register &index, fcml_uint8_t scaleFactor, const Integer &displacement)
 Adds an an effective address based operator for an index register, scaleFactor, displacement and byte size operator. More...
 
IBeffw (const Register &index, fcml_uint8_t scaleFactor, const Integer &displacement)
 Adds an an effective address based operator for an index register, scaleFactor, displacement and word size operator. More...
 
IBeffd (const Register &index, fcml_uint8_t scaleFactor, const Integer &displacement)
 Adds an an effective address based operator for an index register, scaleFactor, displacement and double word size operator. More...
 
IBeffq (const Register &index, fcml_uint8_t scaleFactor, const Integer &displacement)
 Adds an an effective address based operator for an index register, scaleFactor, displacement and quadro word size operator. More...
 
IBeff (const Register &base, const Register &index, fcml_usize sizeOperator=FCML_DS_UNDEF)
 Adds an an effective address based operator for a base register, index register and optional size operator. More...
 
IBeffb (const Register &base, const Register &index)
 Adds an an effective address based operator for a base register, index register and byte size operator. More...
 
IBeffw (const Register &base, const Register &index)
 Adds an an effective address based operator for a base register, index register and word size operator. More...
 
IBeffd (const Register &base, const Register &index)
 Adds an an effective address based operator for a base register, index register and double word size operator. More...
 
IBeffq (const Register &base, const Register &index)
 Adds an an effective address based operator for a base register, index register and quadro word size operator. More...
 
IBeff (const Register &base, const Register &index, fcml_uint8_t scaleFactor, fcml_usize sizeOperator=FCML_DS_UNDEF)
 Adds an an effective address based operator for a base register, index register, scale factor and optional size operator. More...
 
IBeffb (const Register &base, const Register &index, fcml_uint8_t scaleFactor)
 Adds an an effective address based operator for a base register, index register, scale factor and byte size operator. More...
 
IBeffw (const Register &base, const Register &index, fcml_uint8_t scaleFactor)
 Adds an an effective address based operator for a base register, index register, scale factor and word size operator. More...
 
IBeffd (const Register &base, const Register &index, fcml_uint8_t scaleFactor)
 Adds an an effective address based operator for a base register, index register, scale factor and double word size operator. More...
 
IBeffq (const Register &base, const Register &index, fcml_uint8_t scaleFactor)
 Adds an an effective address based operator for a base register, index register, scale factor and quadro word size operator. More...
 
IBeff (const Register &base, const Register &index, fcml_uint8_t scaleFactor, const Integer &displacement, fcml_usize sizeOperator=FCML_DS_UNDEF)
 Adds an an effective address based operator for a base register, index register, scale factor and optional size operator. More...
 
IBeffb (const Register &base, const Register &index, fcml_uint8_t scaleFactor, const Integer &displacement)
 Adds an an effective address based operator for a base register, index register, scale factor and byte size operator. More...
 
IBeffw (const Register &base, const Register &index, fcml_uint8_t scaleFactor, const Integer &displacement)
 Adds an an effective address based operator for a base register, index register, scale factor and word size operator. More...
 
IBeffd (const Register &base, const Register &index, fcml_uint8_t scaleFactor, const Integer &displacement)
 Adds an an effective address based operator for a base register, index register, scale factor and double word size operator. More...
 
IBeffq (const Register &base, const Register &index, fcml_uint8_t scaleFactor, const Integer &displacement)
 Adds an an effective address based operator for a base register, index register, scale factor and quardo word size operator. More...
 
IBoperator<< (const Operand &operand)
 Adds an operand to the instruction being built. More...
 
IBoperator<< (const InstructionPrefix &prefix)
 Adds a prefix to the instruction being built. More...
 
IBoperator<< (const InstructionHint &hint)
 Adds an instruction level hint to the instruction being built. More...
 
IBoperator<< (const OperandHint &hint)
 Adds an operand level hint to the instruction being built. More...
 
IBset (const InstructionPrefix &prefix)
 Adds a prefix to the instruction being built. More...
 
IBset (const InstructionHint &hint)
 Adds an instruction level hint to the instruction being built. More...
 
IBset (const OperandHint &hint)
 Adds an operand level hint to the instruction being built. More...
 

Static Public Member Functions

static IB inst (const fcml_cstring &mnemonic)
 Factory method that can be used to create instruction builder. More...
 
static const InstructionHint FAR_PTR ()
 Creates a hint instance described by the name of the method. More...
 
static const InstructionHint NEAR_PTR ()
 Creates a hint instance described by the name of the method. More...
 
static const InstructionHint LONG_FORM_PTR ()
 Creates a hint instance described by the name of the method. More...
 
static const InstructionHint INDIRECT_PTR ()
 Creates a hint instance described by the name of the method. More...
 
static const InstructionHint DIRECT_PTR ()
 Creates a hint instance described by the name of the method. More...
 
static const InstructionPrefix LOCK ()
 Creates a prefix instance described by the name of the method. More...
 
static const InstructionPrefix REPNE ()
 Creates a prefix instance described by the name of the method. More...
 
static const InstructionPrefix REPNZ ()
 Creates a prefix instance described by the name of the method. More...
 
static const InstructionPrefix REP ()
 Creates a prefix instance described by the name of the method. More...
 
static const InstructionPrefix REPE ()
 Creates a prefix instance described by the name of the method. More...
 
static const InstructionPrefix REPZ ()
 Creates a prefix instance described by the name of the method. More...
 
static const InstructionPrefix XACQUIRE ()
 Creates a prefix instance described by the name of the method. More...
 
static const InstructionPrefix XRELEASE ()
 Creates a prefix instance described by the name of the method. More...
 
static const InstructionPrefix BRANCH ()
 Creates a prefix instance described by the name of the method. More...
 
static const InstructionPrefix NO_BRANCH ()
 Creates a prefix instance described by the name of the method. More...
 
static const OperandHint OP_MULTIMEDIA_HINT ()
 Gets multimedia hint for the operand. More...
 
static const OperandHint OP_RELATIVE_ADDRESSING ()
 Gets relative address hint for the operand. More...
 
static const OperandHint OP_ABSOLUTE_ADDRESSING ()
 Gets absolute hint for the operand. More...
 
static const OperandHint OP_SIB_ENCODING ()
 Gets SIB encoding hint for the operand. More...
 

Detailed Description

An instruction builder.

A classic builder that can be used to prepare instruction in a more convenient way than doing it manually using setters.

Since
1.1.0

Constructor & Destructor Documentation

◆ IB() [1/4]

fcml::IB::IB ( const fcml_cstring mnemonic)
inline

Creates builder for the given mnemonic.

Parameters
mnemonicMnemonic for the instruction being created.
Since
1.1.0

◆ IB() [2/4]

fcml::IB::IB ( fcml_prefixes  prefixes,
const fcml_cstring mnemonic 
)
inline

Creates builder for the given mnemonic and prefixes.

Parameters
prefixesThe prefixes for the new instruction.
mnemonicMnemonic for the instruction being created.
Since
1.1.0

◆ IB() [3/4]

fcml::IB::IB ( const fcml_cstring mnemonic,
fcml_hints  hints 
)
inline

Creates an instruction builder for given mnemonic and hints.

Parameters
mnemonicThe instruction mnemonic.
hintsThe instruction hints.
Since
1.1.0

◆ IB() [4/4]

fcml::IB::IB ( fcml_prefixes  prefixes,
const fcml_cstring mnemonic,
fcml_hints  hints 
)
inline

Creates an instruction builder for given prefixes, mnemonic and hints.

Parameters
prefixesThe instruction prefixes.
mnemonicThe instruction mnemonic.
hintsThe instruction hints.
Since
1.1.0

Member Function Documentation

◆ addr() [1/3]

IB& fcml::IB::addr ( const Address address)
inline

Adds an address operand.

Parameters
addressAn address instance.
Returns
The address operand.
Since
1.1.0

◆ addr() [2/3]

IB& fcml::IB::addr ( const EffectiveAddress effectiveAddress,
fcml_usize  sizeOperator = FCML_DS_UNDEF 
)
inline

Adds an address type operand for given effective address and optional size operator.

Parameters
effectiveAddressThe effective address.
sizeOperatorThe optional size operator.
Returns
The created operator.
Since
1.1.0

◆ addr() [3/3]

IB& fcml::IB::addr ( const EffectiveAddress effectiveAddress,
const SegmentSelector segmentSelector,
fcml_usize  sizeOperator = FCML_DS_UNDEF 
)
inline

Adds an address type operand for given segment selector, effective address and optional size operator.

Parameters
effectiveAddressThe effective address.
segmentSelectorThe segment selector.
sizeOperatorThe optional size operator.
Returns
The created operator.
Since
1.1.0

◆ addrb() [1/2]

IB& fcml::IB::addrb ( const EffectiveAddress effectiveAddress)
inline

Adds an address type operand for given effective address and byte size operator.

Parameters
effectiveAddressThe effective address.
Returns
The created operator.
Since
1.1.0

◆ addrb() [2/2]

IB& fcml::IB::addrb ( const EffectiveAddress effectiveAddress,
const SegmentSelector segmentSelector 
)
inline

Adds an address type operand for given effective address and byte size operator.

Parameters
effectiveAddressThe effective address.
segmentSelectorThe segment selector.
Returns
The created operator.
Since
1.1.0

◆ addrd() [1/2]

IB& fcml::IB::addrd ( const EffectiveAddress effectiveAddress)
inline

Adds an address type operand for given effective address and double word size operator.

Parameters
effectiveAddressThe effective address.
Returns
The created operator.
Since
1.1.0

◆ addrd() [2/2]

IB& fcml::IB::addrd ( const EffectiveAddress effectiveAddress,
const SegmentSelector segmentSelector 
)
inline

Adds an address type operand for given effective address and double word size operator.

Parameters
effectiveAddressThe effective address.
segmentSelectorThe segment selector.
Returns
The created operator.
Since
1.1.0

◆ addrq() [1/2]

IB& fcml::IB::addrq ( const EffectiveAddress effectiveAddress)
inline

Adds an address type operand for given effective address and quadro word size operator.

Parameters
effectiveAddressThe effective address.
Returns
The created operator.
Since
1.1.0

◆ addrq() [2/2]

IB& fcml::IB::addrq ( const EffectiveAddress effectiveAddress,
const SegmentSelector segmentSelector 
)
inline

Adds an address type operand for given effective address and quadro word size operator.

Parameters
effectiveAddressThe effective address.
segmentSelectorThe segment selector.
Returns
The created operator.
Since
1.1.0

◆ addrw() [1/2]

IB& fcml::IB::addrw ( const EffectiveAddress effectiveAddress)
inline

Adds an address type operand for given effective address and word size operator.

Parameters
effectiveAddressThe effective address.
Returns
The created operator.
Since
1.1.0

◆ addrw() [2/2]

IB& fcml::IB::addrw ( const EffectiveAddress effectiveAddress,
const SegmentSelector segmentSelector 
)
inline

Adds an address type operand for given effective address and byte size operator.

Parameters
effectiveAddressThe effective address.
segmentSelectorThe segment selector.
Returns
The created operator.
Since
1.1.0

◆ BRANCH()

static const InstructionPrefix fcml::IB::BRANCH ( )
inlinestatic

Creates a prefix instance described by the name of the method.

Such a prefix can be then used together with the shift operator overridden by the builder in order to set an appropriate prefix for the instruction being built.

Returns
The prefix indicator for the builder.
Since
1.1.0

◆ branchHint()

IB& fcml::IB::branchHint ( )
inline

Sets a prefix described by the name of the method for the instruction being built.

Returns
The instruction builder with the appropriate prefix set.
Since
1.1.0

◆ build()

Instruction fcml::IB::build ( ) const
inline

Builds an instruction instance for the current state of the builder.

Returns
The built instruction instance.
Since
1.1.0

◆ DIRECT_PTR()

static const InstructionHint fcml::IB::DIRECT_PTR ( )
inlinestatic

Creates a hint instance described by the name of the method.

Such a hint can be then used together with shift operator overridden by the builder in order to set an appropriate hint for the instruction being built.

Returns
The hint indicator for the builder.
Since
1.1.0

◆ directPtr()

IB& fcml::IB::directPtr ( )
inline

Sets a hint described by the name of the method for the instruction being built.

Returns
The instruction builder with the appropriate hint set.
Since
1.1.0

◆ eff() [1/7]

IB& fcml::IB::eff ( const Integer displacement,
fcml_usize  sizeOperator = FCML_DS_UNDEF 
)
inline

Adds an an effective address based operator for a displacement and optional size operator.

Parameters
displacementThe displacement value.
sizeOperatorThe size operator.
Returns
The created operator.
Since
1.1.0

◆ eff() [2/7]

IB& fcml::IB::eff ( const Register base,
fcml_usize  sizeOperator = FCML_DS_UNDEF 
)
inline

Adds an an effective address based operator for a base register and optional size operator.

Parameters
baseThe base register.
sizeOperatorThe optional size operator.
Returns
The created operator.
Since
1.1.0

◆ eff() [3/7]

IB& fcml::IB::eff ( const Register base,
const Integer displacement,
fcml_usize  sizeOperator = FCML_DS_UNDEF 
)
inline

Adds an an effective address based operator for a base register, displacement and optional size operator.

Parameters
baseThe base register.
displacementThe displacement value.
sizeOperatorThe optional size operator.
Returns
The created operator.
Since
1.1.0

◆ eff() [4/7]

IB& fcml::IB::eff ( const Register index,
fcml_uint8_t  scaleFactor,
const Integer displacement,
fcml_usize  sizeOperator = FCML_DS_UNDEF 
)
inline

Adds an an effective address based operator for an index register, scaleFactor, displacement and optional size operator.

Parameters
indexThe index register.
scaleFactorThe scale factor.
displacementThe displacement value.
sizeOperatorThe optional size operator.
Returns
The created operator.
Since
1.1.0

◆ eff() [5/7]

IB& fcml::IB::eff ( const Register base,
const Register index,
fcml_usize  sizeOperator = FCML_DS_UNDEF 
)
inline

Adds an an effective address based operator for a base register, index register and optional size operator.

Parameters
baseThe base register.
indexThe index register.
sizeOperatorThe optional size operator.
Returns
The created operator.
Since
1.1.0

◆ eff() [6/7]

IB& fcml::IB::eff ( const Register base,
const Register index,
fcml_uint8_t  scaleFactor,
fcml_usize  sizeOperator = FCML_DS_UNDEF 
)
inline

Adds an an effective address based operator for a base register, index register, scale factor and optional size operator.

Parameters
baseThe base register.
indexThe index register.
scaleFactorThe scale factor.
sizeOperatorThe optional size operator.
Returns
The created operator.
Since
1.1.0

◆ eff() [7/7]

IB& fcml::IB::eff ( const Register base,
const Register index,
fcml_uint8_t  scaleFactor,
const Integer displacement,
fcml_usize  sizeOperator = FCML_DS_UNDEF 
)
inline

Adds an an effective address based operator for a base register, index register, scale factor and optional size operator.

Parameters
baseThe base register.
indexThe index register.
scaleFactorThe scale factor.
displacementThe displacement value.
sizeOperatorThe optional size operator.
Returns
The created operator.
Since
1.1.0

◆ effb() [1/7]

IB& fcml::IB::effb ( const Integer displacement)
inline

Adds an an effective address based operator for a displacement and byte size operator.

Parameters
displacementThe displacement value.
Returns
The created operator.
Since
1.1.0

◆ effb() [2/7]

IB& fcml::IB::effb ( const Register base)
inline

Adds an an effective address based operator for a base register and byte size operator.

Parameters
baseThe base register.
Returns
The created operator.
Since
1.1.0

◆ effb() [3/7]

IB& fcml::IB::effb ( const Register base,
const Integer displacement 
)
inline

Adds an an effective address based operator for a base register, displacement and byte size operator.

Parameters
baseThe base register.
displacementThe displacement value.
Returns
The created operator.
Since
1.1.0

◆ effb() [4/7]

IB& fcml::IB::effb ( const Register index,
fcml_uint8_t  scaleFactor,
const Integer displacement 
)
inline

Adds an an effective address based operator for an index register, scaleFactor, displacement and byte size operator.

Parameters
indexThe index register.
scaleFactorThe scale factor.
displacementThe displacement value.
Returns
The created operator.
Since
1.1.0

◆ effb() [5/7]

IB& fcml::IB::effb ( const Register base,
const Register index 
)
inline

Adds an an effective address based operator for a base register, index register and byte size operator.

Parameters
baseThe base register.
indexThe index register.
Returns
The created operator.
Since
1.1.0

◆ effb() [6/7]

IB& fcml::IB::effb ( const Register base,
const Register index,
fcml_uint8_t  scaleFactor 
)
inline

Adds an an effective address based operator for a base register, index register, scale factor and byte size operator.

Parameters
baseThe base register.
indexThe index register.
scaleFactorThe scale factor.
Returns
The created operator.
Since
1.1.0

◆ effb() [7/7]

IB& fcml::IB::effb ( const Register base,
const Register index,
fcml_uint8_t  scaleFactor,
const Integer displacement 
)
inline

Adds an an effective address based operator for a base register, index register, scale factor and byte size operator.

Parameters
baseThe base register.
indexThe index register.
scaleFactorThe scale factor.
displacementThe displacement value.
Returns
The created operator.
Since
1.1.0

◆ effd() [1/7]

IB& fcml::IB::effd ( const Integer displacement)
inline

Adds an an effective address based operator for a displacement and double word size operator.

Parameters
displacementThe displacement value.
Returns
The created operator.
Since
1.1.0

◆ effd() [2/7]

IB& fcml::IB::effd ( const Register base)
inline

Adds an an effective address based operator for a base register and double word size operator.

Parameters
baseThe base register.
Returns
The created operator.
Since
1.1.0

◆ effd() [3/7]

IB& fcml::IB::effd ( const Register base,
const Integer displacement 
)
inline

Adds an an effective address based operator for a base register, displacement and double word size operator.

Parameters
baseThe base register.
displacementThe displacement value.
Returns
The created operator.
Since
1.1.0

◆ effd() [4/7]

IB& fcml::IB::effd ( const Register index,
fcml_uint8_t  scaleFactor,
const Integer displacement 
)
inline

Adds an an effective address based operator for an index register, scaleFactor, displacement and double word size operator.

Parameters
indexThe index register.
scaleFactorThe scale factor.
displacementThe displacement value.
Returns
The created operator.
Since
1.1.0

◆ effd() [5/7]

IB& fcml::IB::effd ( const Register base,
const Register index 
)
inline

Adds an an effective address based operator for a base register, index register and double word size operator.

Parameters
baseThe base register.
indexThe index register.
Returns
The created operator.
Since
1.1.0

◆ effd() [6/7]

IB& fcml::IB::effd ( const Register base,
const Register index,
fcml_uint8_t  scaleFactor 
)
inline

Adds an an effective address based operator for a base register, index register, scale factor and double word size operator.

Parameters
baseThe base register.
indexThe index register.
scaleFactorThe scale factor.
Returns
The created operator.
Since
1.1.0

◆ effd() [7/7]

IB& fcml::IB::effd ( const Register base,
const Register index,
fcml_uint8_t  scaleFactor,
const Integer displacement 
)
inline

Adds an an effective address based operator for a base register, index register, scale factor and double word size operator.

Parameters
baseThe base register.
indexThe index register.
scaleFactorThe scale factor.
displacementThe displacement value.
Returns
The created operator.
Since
1.1.0

◆ effq() [1/7]

IB& fcml::IB::effq ( const Integer displacement)
inline

Adds an an effective address based operator for a displacement and quadro byte size operator.

Parameters
displacementThe displacement value.
Returns
The created operator.
Since
1.1.0

◆ effq() [2/7]

IB& fcml::IB::effq ( const Register base)
inline

Adds an an effective address based operator for a base register and quadro word size operator.

Parameters
baseThe base register.
Returns
The created operator.
Since
1.1.0

◆ effq() [3/7]

IB& fcml::IB::effq ( const Register base,
const Integer displacement 
)
inline

Adds an an effective address based operator for a base register, displacement and quadro word size operator.

Parameters
baseThe base register.
displacementThe displacement value.
Returns
The created operator.
Since
1.1.0

◆ effq() [4/7]

IB& fcml::IB::effq ( const Register index,
fcml_uint8_t  scaleFactor,
const Integer displacement 
)
inline

Adds an an effective address based operator for an index register, scaleFactor, displacement and quadro word size operator.

Parameters
indexThe index register.
scaleFactorThe scale factor.
displacementThe displacement value.
Returns
The created operator.
Since
1.1.0

◆ effq() [5/7]

IB& fcml::IB::effq ( const Register base,
const Register index 
)
inline

Adds an an effective address based operator for a base register, index register and quadro word size operator.

Parameters
baseThe base register.
indexThe index register.
Returns
The created operator.
Since
1.1.0

◆ effq() [6/7]

IB& fcml::IB::effq ( const Register base,
const Register index,
fcml_uint8_t  scaleFactor 
)
inline

Adds an an effective address based operator for a base register, index register, scale factor and quadro word size operator.

Parameters
baseThe base register.
indexThe index register.
scaleFactorThe scale factor.
Returns
The created operator.
Since
1.1.0

◆ effq() [7/7]

IB& fcml::IB::effq ( const Register base,
const Register index,
fcml_uint8_t  scaleFactor,
const Integer displacement 
)
inline

Adds an an effective address based operator for a base register, index register, scale factor and quardo word size operator.

Parameters
baseThe base register.
indexThe index register.
scaleFactorThe scale factor.
displacementThe displacement value.
Returns
The created operator.
Since
1.1.0

◆ effw() [1/7]

IB& fcml::IB::effw ( const Integer displacement)
inline

Adds an an effective address based operator for a displacement and word size operator.

Parameters
displacementThe displacement value.
Returns
The created operator.
Since
1.1.0

◆ effw() [2/7]

IB& fcml::IB::effw ( const Register base)
inline

Adds an an effective address based operator for a base register and word size operator.

Parameters
baseThe base register.
Returns
The created operator.
Since
1.1.0

◆ effw() [3/7]

IB& fcml::IB::effw ( const Register base,
const Integer displacement 
)
inline

Adds an an effective address based operator for a base register, displacement and word size operator.

Parameters
baseThe base register.
displacementThe displacement value.
Returns
The created operator.
Since
1.1.0

◆ effw() [4/7]

IB& fcml::IB::effw ( const Register index,
fcml_uint8_t  scaleFactor,
const Integer displacement 
)
inline

Adds an an effective address based operator for an index register, scaleFactor, displacement and word size operator.

Parameters
indexThe index register.
scaleFactorThe scale factor.
displacementThe displacement value.
Returns
The created operator.
Since
1.1.0

◆ effw() [5/7]

IB& fcml::IB::effw ( const Register base,
const Register index 
)
inline

Adds an an effective address based operator for a base register, index register and word size operator.

Parameters
baseThe base register.
indexThe index register.
Returns
The created operator.
Since
1.1.0

◆ effw() [6/7]

IB& fcml::IB::effw ( const Register base,
const Register index,
fcml_uint8_t  scaleFactor 
)
inline

Adds an an effective address based operator for a base register, index register, scale factor and word size operator.

Parameters
baseThe base register.
indexThe index register.
scaleFactorThe scale factor.
Returns
The created operator.
Since
1.1.0

◆ effw() [7/7]

IB& fcml::IB::effw ( const Register base,
const Register index,
fcml_uint8_t  scaleFactor,
const Integer displacement 
)
inline

Adds an an effective address based operator for a base register, index register, scale factor and word size operator.

Parameters
baseThe base register.
indexThe index register.
scaleFactorThe scale factor.
displacementThe displacement value.
Returns
The created operator.
Since
1.1.0

◆ FAR_PTR()

static const InstructionHint fcml::IB::FAR_PTR ( )
inlinestatic

Creates a hint instance described by the name of the method.

Such a hint can be then used together with shift operator overridden by the builder in order to set an appropriate hint for the instruction being built.

Returns
The hint indicator for the builder.
Since
1.1.0

◆ far_ptr() [1/3]

IB& fcml::IB::far_ptr ( fcml_uint16_t  seg,
fcml_int16_t  addr 
)
inline

Adds a far pointer operand.

Parameters
segA segment selector.
addrAn 16-bit offset value.
Returns
The far pointer operand.
Since
1.1.0

◆ far_ptr() [2/3]

IB& fcml::IB::far_ptr ( fcml_uint16_t  seg,
fcml_int32_t  addr 
)
inline

Adds a far pointer operand.

Parameters
segA segment selector.
addrAn 32-bit offset value.
Returns
The far pointer operand.
Since
1.1.0

◆ far_ptr() [3/3]

IB& fcml::IB::far_ptr ( const FarPointer pointer)
inline

Adds a far pointer operand.

Parameters
pointerA far pointer instance.
Returns
The far pointer operand.
Since
1.1.0

◆ farPtr()

IB& fcml::IB::farPtr ( )
inline

Sets a hint described by the name of the method for the instruction being built.

Returns
The instruction builder with the appropriate hint set.
Since
1.1.0

◆ imm()

IB& fcml::IB::imm ( const Integer imm)
inline

Adds an immediate operand.

Returns
The immediate operand.
Since
1.1.0

◆ INDIRECT_PTR()

static const InstructionHint fcml::IB::INDIRECT_PTR ( )
inlinestatic

Creates a hint instance described by the name of the method.

Such a hint can be then used together with shift operator overridden by the builder in order to set an appropriate hint for the instruction being built.

Returns
The hint indicator for the builder.
Since
1.1.0

◆ indirectPtr()

IB& fcml::IB::indirectPtr ( )
inline

Sets a hint described by the name of the method for the instruction being built.

Returns
The instruction builder with the appropriate hint set.
Since
1.1.0

◆ inst()

static IB fcml::IB::inst ( const fcml_cstring mnemonic)
inlinestatic

Factory method that can be used to create instruction builder.

Parameters
mnemonicThe mnemonic for the instruction builder.
Returns
Instruction builder instance.
Since
1.1.0

◆ LOCK()

static const InstructionPrefix fcml::IB::LOCK ( )
inlinestatic

Creates a prefix instance described by the name of the method.

Such a prefix can be then used together with the shift operator overridden by the builder in order to set an appropriate prefix for the instruction being built.

Returns
The prefix indicator for the builder.
Since
1.1.0

◆ lock()

IB& fcml::IB::lock ( )
inline

Sets a prefix described by the name of the method for the instruction being built.

Returns
The instruction builder with the appropriate prefix set.
Since
1.1.0

◆ LONG_FORM_PTR()

static const InstructionHint fcml::IB::LONG_FORM_PTR ( )
inlinestatic

Creates a hint instance described by the name of the method.

Such a hint can be then used together with shift operator overridden by the builder in order to set an appropriate hint for the instruction being built.

Returns
The hint indicator for the builder.
Since
1.1.0

◆ longFormPtr()

IB& fcml::IB::longFormPtr ( )
inline

Sets a hint described by the name of the method for the instruction being built.

Returns
The instruction builder with the appropriate hint set.
Since
1.1.0

◆ NEAR_PTR()

static const InstructionHint fcml::IB::NEAR_PTR ( )
inlinestatic

Creates a hint instance described by the name of the method.

Such a hint can be then used together with shift operator overridden by the builder in order to set an appropriate hint for the instruction being built.

Returns
The hint indicator for the builder.
Since
1.1.0

◆ nearPtr()

IB& fcml::IB::nearPtr ( )
inline

Sets a hint described by the name of the method for the instruction being built.

Returns
The instruction builder with the appropriate hint set.
Since
1.1.0

◆ NO_BRANCH()

static const InstructionPrefix fcml::IB::NO_BRANCH ( )
inlinestatic

Creates a prefix instance described by the name of the method.

Such a prefix can be then used together with the shift operator overridden by the builder in order to set an appropriate prefix for the instruction being built.

Returns
The prefix indicator for the builder.
Since
1.1.0

◆ nobranchHint()

IB& fcml::IB::nobranchHint ( )
inline

Sets a prefix described by the name of the method for the instruction being built.

Returns
The instruction builder with the appropriate prefix set.
Since
1.1.0

◆ off()

IB& fcml::IB::off ( const Integer offset,
fcml_usize  sizeOperator = FCML_DS_UNDEF 
)
inline

Adds an offset operand.

Parameters
offsetAn offset instance.
sizeOperatorAn optional size operator.
Returns
The address operand.
Since
1.1.0

◆ offb()

IB& fcml::IB::offb ( const Integer offset)
inline

Adds an offset based address operand with byte size operator.

Parameters
offsetAn offset instance.
Returns
The address operand.
Since
1.1.0

◆ offd()

IB& fcml::IB::offd ( const Integer offset)
inline

Adds an offset based address operand with double word size operator.

Parameters
offsetAn offset instance.
Returns
The address operand.
Since
1.1.0

◆ offq()

IB& fcml::IB::offq ( const Integer offset)
inline

Adds an offset based address operand with quadro word size operator.

Parameters
offsetAn offset instance.
Returns
The address operand.
Since
1.1.0

◆ offw()

IB& fcml::IB::offw ( const Integer offset)
inline

Adds an offset based address operand with word size operator.

Parameters
offsetAn offset instance.
Returns
The address operand.
Since
1.1.0

◆ op()

void fcml::IB::op ( const Operand operand)
inline

Sets a next operand for the instruction.

Parameters
operandThe next operand to be added to the instruction.
Exceptions
IllegalStateExceptionNo more operands allowed.
Since
1.1.0

◆ OP_ABSOLUTE_ADDRESSING()

static const OperandHint fcml::IB::OP_ABSOLUTE_ADDRESSING ( )
inlinestatic

Gets absolute hint for the operand.

Returns
The multimedia hint.

◆ OP_MULTIMEDIA_HINT()

static const OperandHint fcml::IB::OP_MULTIMEDIA_HINT ( )
inlinestatic

Gets multimedia hint for the operand.

Returns
The multimedia hint.

◆ OP_RELATIVE_ADDRESSING()

static const OperandHint fcml::IB::OP_RELATIVE_ADDRESSING ( )
inlinestatic

Gets relative address hint for the operand.

Returns
The multimedia hint.

◆ OP_SIB_ENCODING()

static const OperandHint fcml::IB::OP_SIB_ENCODING ( )
inlinestatic

Gets SIB encoding hint for the operand.

Returns
The SIB encoding hint.

◆ operandAbsoluteHint()

IB& fcml::IB::operandAbsoluteHint ( )
inline

Marks the lastly added address operand as a absolute one.

Returns
The instruction builder itself.

◆ operandMultimediaHint()

IB& fcml::IB::operandMultimediaHint ( )
inline

Marks the lastly added operand as a multimedia one.

Returns
The instruction builder itself.

◆ operandRelativeHint()

IB& fcml::IB::operandRelativeHint ( )
inline

Marks the lastly added address operand as a relative one.

Returns
The instruction builder itself.

◆ operandSIBEncodingHint()

IB& fcml::IB::operandSIBEncodingHint ( )
inline

Sets preferred encoding to SIB for the lastly added ModR/M operand.

Returns
The instruction builder itself.

◆ operator Instruction()

fcml::IB::operator Instruction ( ) const
inline

Converts builder to the instruction instance.

Since
1.1.0
Returns
The built instruction.

◆ operator<<() [1/4]

IB& fcml::IB::operator<< ( const Operand operand)
inline

Adds an operand to the instruction being built.

Parameters
operandThe operand to be added.
Returns
The instruction builder with the new operand added to it.
Since
1.1.0

◆ operator<<() [2/4]

IB& fcml::IB::operator<< ( const InstructionPrefix prefix)
inline

Adds a prefix to the instruction being built.

Parameters
prefixThe prefix to be added.
Returns
The instruction builder with the new prefix set for it.
Since
1.1.0

◆ operator<<() [3/4]

IB& fcml::IB::operator<< ( const InstructionHint hint)
inline

Adds an instruction level hint to the instruction being built.

Parameters
hintThe hint to be added.
Returns
The instruction builder with the new hint added to it.
Since
1.1.0

◆ operator<<() [4/4]

IB& fcml::IB::operator<< ( const OperandHint hint)
inline

Adds an operand level hint to the instruction being built.

Parameters
hintThe hint to be added.
Returns
The instruction builder with the new hint added to it.
Since
1.1.0

◆ reg() [1/2]

IB& fcml::IB::reg ( const Register reg)
inline

Adds an an register based operator for given register.

Parameters
regThe register.
Returns
The created operator.
Since
1.1.0

◆ reg() [2/2]

IB& fcml::IB::reg ( fcml_uint8_t  reg,
fcml_usize  size,
Register::RegisterType  type = Register::REG_GPR,
fcml_bool  x64_exp = FCML_FALSE 
)
inline

Adds an an register based operator for given parameters.

Parameters
regThe FCML register number.
sizeThe register size.
typeThe register type.
x64_expSee manual for more information.
Returns
The created operator.
Since
1.1.0

◆ REP()

static const InstructionPrefix fcml::IB::REP ( )
inlinestatic

Creates a prefix instance described by the name of the method.

Such a prefix can be then used together with the shift operator overridden by the builder in order to set an appropriate prefix for the instruction being built.

Returns
The prefix indicator for the builder.
Since
1.1.0

◆ rep()

IB& fcml::IB::rep ( )
inline

Sets a prefix described by the name of the method for the instruction being built.

Returns
The instruction builder with the appropriate prefix set.
Since
1.1.0

◆ REPE()

static const InstructionPrefix fcml::IB::REPE ( )
inlinestatic

Creates a prefix instance described by the name of the method.

Such a prefix can be then used together with the shift operator overridden by the builder in order to set an appropriate prefix for the instruction being built.

Returns
The prefix indicator for the builder.
Since
1.1.0

◆ repe()

IB& fcml::IB::repe ( )
inline

Sets a prefix described by the name of the method for the instruction being built.

Returns
The instruction builder with the appropriate prefix set.
Since
1.1.0

◆ REPNE()

static const InstructionPrefix fcml::IB::REPNE ( )
inlinestatic

Creates a prefix instance described by the name of the method.

Such a prefix can be then used together with the shift operator overridden by the builder in order to set an appropriate prefix for the instruction being built.

Returns
The prefix indicator for the builder.
Since
1.1.0

◆ repne()

IB& fcml::IB::repne ( )
inline

Sets a prefix described by the name of the method for the instruction being built.

Returns
The instruction builder with the appropriate prefix set.
Since
1.1.0

◆ REPNZ()

static const InstructionPrefix fcml::IB::REPNZ ( )
inlinestatic

Creates a prefix instance described by the name of the method.

Such a prefix can be then used together with the shift operator overridden by the builder in order to set an appropriate prefix for the instruction being built.

Returns
The prefix indicator for the builder.
Since
1.1.0

◆ repnz()

IB& fcml::IB::repnz ( )
inline

Sets a prefix described by the name of the method for the instruction being built.

Returns
The instruction builder with the appropriate prefix set.
Since
1.1.0

◆ REPZ()

static const InstructionPrefix fcml::IB::REPZ ( )
inlinestatic

Creates a prefix instance described by the name of the method.

Such a prefix can be then used together with the shift operator overridden by the builder in order to set an appropriate prefix for the instruction being built.

Returns
The prefix indicator for the builder.
Since
1.1.0

◆ repz()

IB& fcml::IB::repz ( )
inline

Sets a prefix described by the name of the method for the instruction being built.

Returns
The instruction builder with the appropriate prefix set.
Since
1.1.0

◆ set() [1/3]

IB& fcml::IB::set ( const InstructionPrefix prefix)
inline

Adds a prefix to the instruction being built.

Parameters
prefixThe prefix to be added.
Returns
The instruction builder with the new prefix set for it.
Since
1.1.0

◆ set() [2/3]

IB& fcml::IB::set ( const InstructionHint hint)
inline

Adds an instruction level hint to the instruction being built.

Parameters
hintThe hint to be added.
Returns
The instruction builder with the new hint added to it.
Since
1.1.0

◆ set() [3/3]

IB& fcml::IB::set ( const OperandHint hint)
inline

Adds an operand level hint to the instruction being built.

Parameters
hintThe hint to be added.
Returns
The instruction builder with the new hint added to it.
Since
1.1.0

◆ XACQUIRE()

static const InstructionPrefix fcml::IB::XACQUIRE ( )
inlinestatic

Creates a prefix instance described by the name of the method.

Such a prefix can be then used together with the shift operator overridden by the builder in order to set an appropriate prefix for the instruction being built.

Returns
The prefix indicator for the builder.
Since
1.1.0

◆ xacquire()

IB& fcml::IB::xacquire ( )
inline

Sets a prefix described by the name of the method for the instruction being built.

Returns
The instruction builder with the appropriate prefix set.
Since
1.1.0

◆ XRELEASE()

static const InstructionPrefix fcml::IB::XRELEASE ( )
inlinestatic

Creates a prefix instance described by the name of the method.

Such a prefix can be then used together with the shift operator overridden by the builder in order to set an appropriate prefix for the instruction being built.

Returns
The prefix indicator for the builder.
Since
1.1.0

◆ xrelease()

IB& fcml::IB::xrelease ( )
inline

Sets a prefix described by the name of the method for the instruction being built.

Returns
The instruction builder with the appropriate prefix set.
Since
1.1.0

The documentation for this class was generated from the following file: