This structure gives informations on used prefixes. When can know if some prefixes are used properly or not.
struct PREFIXINFO {
int Number;
int NbUndefined;
BYTE LockPrefix;
BYTE OperandSize;
BYTE AddressSize;
BYTE RepnePrefix;
BYTE RepPrefix;
BYTE FSPrefix;
BYTE SSPrefix;
BYTE GSPrefix;
BYTE ESPrefix;
BYTE CSPrefix;
BYTE DSPrefix;
BYTE BranchTaken;
BYTE BranchNotTaken;
REX_Struct REX;
};
Membres
Number
[out] Indicates the number of prefixes used.
NbUndefined
[out] Indicates the number of prefixes used in a wrong way (illegal use).
LockPrefix
[out] Concerns the LOCK prefix. It can takes one of the following values :
NotUsedPrefix = 0 InUsePrefix = 1 SuperfluousPrefix = 2 InvalidPrefix = 4 MandatoryPrefix = 8
OperandSize
[out] Concerns the prefix used to define the size of operands.
AddressSize
[out] Concerns the prefix used to define the AddressSize
RepnePrefix
[out] Concerns the prefix used to define the REPNE.
RepPrefix
[out] Concerns the prefix used to define the REP.
FSPrefix
[out] Concerns the prefix used to define the FS segment .
SSPrefix
[out] Concerns the prefix used to define the SS segment .
GSPrefix
[out] Concerns the prefix used to define the GS segment .
ESPrefix
[out] Concerns the prefix used to define the ES segment .
CSPrefix
[out] Concerns the prefix used to define the CS segment .
DSPrefix
[out] Concerns the prefix used to define the DS segment .
BranchTaken
[out] Concerns branch hint prefix 0x3E (taken).
BranchNotTaken
[out] Concerns branch hint prefix 0x2E (not taken).
REX
[out] Concerns the prefix used to define the REX in 64 bits mode. The structure sended back is :
struct REX_Struct {
BYTE W_;
BYTE R_;
BYTE X_;
BYTE B_;
BYTE state;
};
Fields W_, R_, X_, B_ are set to 1 if the prefix is used. The field state is set to 1 if a REX prefix is used.