Take for instance these examples:
0xDF MOD[0b11] MOD=3 REG[0b001] RM[nnn]
0xDD MOD[mm] MOD!=3 REG[0b110] RM[nnn] mode16 66_prefix MODRM()
EVV 0x52 VF2 V0F38 MOD[mm] MOD!=3 REG[rrr] RM[nnn] MODRM() BCRC=0
0x0F 0xAE MOD[mm] MOD!=3 REG[0b110] RM[nnn] f3_refining_prefix MODRM()
VV1 0x44 V66 V0F3A MOD[mm] MOD!=3 REG[rrr] RM[nnn] MODRM() VL128 UIMM8()
0x0F 0x1C MOD[mm] MOD!=3 REG[0b000] RM[nnn] MODRM() no_refining_prefix CLDEMOTE=1
EVV 0x8A V66 V0F38 MOD[mm] MOD!=3 REG[rrr] RM[nnn] BCRC=0 MODRM() VL512 W1 NOEVSR ZEROING=0 ESIZE_64_BITS() NELEM_GSCAT()
EVV 0x2D VF2 V0F MOD[0b11] MOD=3 BCRC=0 REG[rrr] RM[nnn] not64 NOEVSR ZEROING=0 MASK=0 FIX_ROUND_LEN128()
0x0F 0x38 0xC9 MOD[mm] MOD!=3 REG[rrr] RM[nnn] MODRM() no_refining_prefix
Where can I find in the code (or other docs) the meaning of all these things?
I understand what REG[0b110] means, and it seems that just calling MODRM() means "this has a ModR/M byte". But not sure.
- What
MOD!=3 and MOD=3 mean.
- What the
mm in MOD[mm] means. Same with REG[rrr] and RM[nnn].
- What the various flags mean, like
not64 NOEVSR ZEROING=0 MASK=0.
- What the
EVV and VV1 (and others) mean (not here in the code or in the Intel docs either).
The xed-state-bits.txt seems to encode the meaning of no_refining_prefix and others.
I've been looking through the generator.py for some hints, but not so much luck. The functions like NELEM_GSCAT() I am not sure what to make of (found in *-disp8.txt):
NELEM_GSCAT()::
otherwise -> nothing
Finally, is this PATTERN literally the order of bits to-be-found (or generated)? Or what should I be reading this as?
Thank you very much.
Take for instance these examples:
Where can I find in the code (or other docs) the meaning of all these things?
I understand what
REG[0b110]means, and it seems that just callingMODRM()means "this has a ModR/M byte". But not sure.MOD!=3andMOD=3mean.mminMOD[mm]means. Same withREG[rrr]andRM[nnn].not64 NOEVSR ZEROING=0 MASK=0.EVVandVV1(and others) mean (not here in the code or in the Intel docs either).The
xed-state-bits.txtseems to encode the meaning ofno_refining_prefixand others.I've been looking through the
generator.pyfor some hints, but not so much luck. The functions likeNELEM_GSCAT()I am not sure what to make of (found in*-disp8.txt):Finally, is this PATTERN literally the order of bits to-be-found (or generated)? Or what should I be reading this as?
Thank you very much.