Files
SHA256/includes/dsmhelp.inc
T

1181 lines
53 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
extern __imp_AddEquation:PANYARGS
AddEquation TEXTEQU <__imp_AddEquation>
extern __imp_AddEquationEx:PANYARGS
AddEquationEx TEXTEQU <__imp_AddEquationEx>
extern __imp_AddNumbers:PANYARGS
AddNumbers TEXTEQU <__imp_AddNumbers>
extern __imp_AndNumbers:PANYARGS
AndNumbers TEXTEQU <__imp_AndNumbers>
extern __imp_Assemble:PANYARGS
Assemble TEXTEQU <__imp_Assemble>
extern __imp_AssembleEx:PANYARGS
AssembleEx TEXTEQU <__imp_AssembleEx>
extern __imp_AssignDataBase:PANYARGS
AssignDataBase TEXTEQU <__imp_AssignDataBase>
extern __imp_AssignDataBaseByHandle:PANYARGS
AssignDataBaseByHandle TEXTEQU <__imp_AssignDataBaseByHandle>
extern __imp_CmpNumbers:PANYARGS
CmpNumbers TEXTEQU <__imp_CmpNumbers>
extern __imp_DelEquation:PANYARGS
DelEquation TEXTEQU <__imp_DelEquation>
extern __imp_Disassemble:PANYARGS
Disassemble TEXTEQU <__imp_Disassemble>
extern __imp_DivNumbers:PANYARGS
DivNumbers TEXTEQU <__imp_DivNumbers>
extern __imp_DsmVersion:PANYARGS
DsmVersion TEXTEQU <__imp_DsmVersion>
extern __imp_EvalExpr128:PANYARGS
EvalExpr128 TEXTEQU <__imp_EvalExpr128>
extern __imp_EvalExpr256:PANYARGS
EvalExpr256 TEXTEQU <__imp_EvalExpr256>
extern __imp_FreeInstr:PANYARGS
FreeInstr TEXTEQU <__imp_FreeInstr>
extern __imp_GetControlFlags:PANYARGS
GetControlFlags TEXTEQU <__imp_GetControlFlags>
extern __imp_GetExceptTextNote:PANYARGS
GetExceptTextNote TEXTEQU <__imp_GetExceptTextNote>
extern __imp_GetExceptions:PANYARGS
GetExceptions TEXTEQU <__imp_GetExceptions>
extern __imp_GetInterruptProps:PANYARGS
GetInterruptProps TEXTEQU <__imp_GetInterruptProps>
extern __imp_GetLatency:PANYARGS
GetLatency TEXTEQU <__imp_GetLatency>
extern __imp_GetMediaExceptionProps:PANYARGS
GetMediaExceptionProps TEXTEQU <__imp_GetMediaExceptionProps>
extern __imp_GetPfxMeaning:PANYARGS
GetPfxMeaning TEXTEQU <__imp_GetPfxMeaning>
extern __imp_GetX87ExceptionProps:PANYARGS
GetX87ExceptionProps TEXTEQU <__imp_GetX87ExceptionProps>
extern __imp_InitInstr:PANYARGS
InitInstr TEXTEQU <__imp_InitInstr>
extern __imp_InitInstrEx:PANYARGS
InitInstrEx TEXTEQU <__imp_InitInstrEx>
extern __imp_InstrDasm:PANYARGS
InstrDasm TEXTEQU <__imp_InstrDasm>
extern __imp_InstrEF:PANYARGS
InstrEF TEXTEQU <__imp_InstrEF>
extern __imp_IntToStr:PANYARGS
IntToStr TEXTEQU <__imp_IntToStr>
extern __imp_IsDFCondition:PANYARGS
IsDFCondition TEXTEQU <__imp_IsDFCondition>
extern __imp_JoinMnemonic:PANYARGS
JoinMnemonic TEXTEQU <__imp_JoinMnemonic>
extern __imp_LastInstrLength:PANYARGS
LastInstrLength TEXTEQU <__imp_LastInstrLength>
extern __imp_LatToStr:PANYARGS
LatToStr TEXTEQU <__imp_LatToStr>
extern __imp_MulNumbers:PANYARGS
MulNumbers TEXTEQU <__imp_MulNumbers>
extern __imp_NegateNumber:PANYARGS
NegateNumber TEXTEQU <__imp_NegateNumber>
extern __imp_NotNumber:PANYARGS
NotNumber TEXTEQU <__imp_NotNumber>
extern __imp_OrNumbers:PANYARGS
OrNumbers TEXTEQU <__imp_OrNumbers>
extern __imp_ParseSource:PANYARGS
ParseSource TEXTEQU <__imp_ParseSource>
extern __imp_ParseSourceEx:PANYARGS
ParseSourceEx TEXTEQU <__imp_ParseSourceEx>
extern __imp_ReinitInstr:PANYARGS
ReinitInstr TEXTEQU <__imp_ReinitInstr>
extern __imp_SelectValidLabelOrNumber:PANYARGS
SelectValidLabelOrNumber TEXTEQU <__imp_SelectValidLabelOrNumber>
extern __imp_SetArch:PANYARGS
SetArch TEXTEQU <__imp_SetArch>
extern __imp_SetBMI1:PANYARGS
SetBMI1 TEXTEQU <__imp_SetBMI1>
extern __imp_SetCPointer:PANYARGS
SetCPointer TEXTEQU <__imp_SetCPointer>
extern __imp_SetCPointerEx:PANYARGS
SetCPointerEx TEXTEQU <__imp_SetCPointerEx>
extern __imp_SetControlFlags:PANYARGS
SetControlFlags TEXTEQU <__imp_SetControlFlags>
extern __imp_SetLoadall:PANYARGS
SetLoadall TEXTEQU <__imp_SetLoadall>
extern __imp_SetLzcnt:PANYARGS
SetLzcnt TEXTEQU <__imp_SetLzcnt>
extern __imp_SetMode:PANYARGS
SetMode TEXTEQU <__imp_SetMode>
extern __imp_SetPopCs:PANYARGS
SetPopCs TEXTEQU <__imp_SetPopCs>
extern __imp_ShlNumber:PANYARGS
ShlNumber TEXTEQU <__imp_ShlNumber>
extern __imp_ShrNumber:PANYARGS
ShrNumber TEXTEQU <__imp_ShrNumber>
extern __imp_SrcAssemble:PANYARGS
SrcAssemble TEXTEQU <__imp_SrcAssemble>
extern __imp_StrToInt:PANYARGS
StrToInt TEXTEQU <__imp_StrToInt>
extern __imp_SubNumbers:PANYARGS
SubNumbers TEXTEQU <__imp_SubNumbers>
extern __imp_XorNumbers:PANYARGS
XorNumbers TEXTEQU <__imp_XorNumbers>
SymCallbackProto TYPEDEF PROTO lpVoid:LPVOID,IntVal:PVOID,dwFlags:DWORD,UndefinedSymbol:LPSTR,SymLength:PULONG
SYM_CALLBACK TYPEDEF PTR SymCallbackProto
Expression struc
ExprLine LPSTR ?
ExprLength DWORD 0
NestingLevel DWORD 0
SymCallback SYM_CALLBACK 0
lpVoid LPVOID 0
Expression ends
PEXPRESSION TYPEDEF PTR Expression
EF STRUC
ID BYTE ? ;21
VIP BYTE ? ;20
VIF BYTE ? ;19
AC BYTE ? ;18
VM BYTE ? ;17
RF BYTE ? ;16
NT BYTE ? ;14
IOPL BYTE ? ;13-12
_OF BYTE ? ;11
_DF BYTE ? ;10
_IF BYTE ? ;9
TF BYTE ? ;8
SF BYTE ? ;7
ZF BYTE ? ;6
AF BYTE ? ;4
PF BYTE ? ;2
CF BYTE ? ;0
EF ENDS
x87c struc
C0 BYTE ?
C1 BYTE ?
C2 BYTE ?
C3 BYTE ?
dC0 BYTE ?
dC1 BYTE ?
dC2 BYTE ?
dC3 BYTE ?
x87c ends
NA equ 0
_0 equ 1
_1 equ 2
U equ 3
_Mod equ 4
TMod equ 5
_Pop equ 6
TPop equ 7
Tst equ 8
lAH equ 9
VMS0 equ 10
VMIN equ 11
VMEN equ 12
;x87 conditions descriptions
lmem equ 1 ;Loaded from memory.
_rng equ 2
;0 Source operand was in range.
;1 Source operand was out of range.
_ovs equ 3
;0 No stack overflow.
;1 x87 stack overflow, if an x87 register stack fault was detected.
v0q equ 4
;0 x87 stack underflow, if an x87 register stack fault was detected.
;M Set equal to the value of bit 0 of the quotient, if there was no fault.
v1q equ 5 ;Set equal to the value of bit 1 of the quotient.
v2q equ 6 ;Set equal to the value of bit 2 of the quotient.
fpri equ 7
;0 FPREM generated the partial remainder.
;1 The source operands differed by more than a factor of 264, so the result
;is incomplete.
rnup equ 8
;0 x87 stack underflow, if an x87 register stack fault was detected.
;0 Result was rounded down, if a precision exception was detected.
;1 Result was rounded up, if a precision exception was detected.
fexm equ 9
;0 0 0 0 +unsupported format
;0 0 0 1 +NaN
;0 0 1 0 unsupported format
;0 0 1 1 NaN
;0 1 0 0 +normal
;0 1 0 1 +infinity
;0 1 1 0 normal
;0 1 1 1 infinity
;1 0 0 0 +0
;1 0 0 1 +empty
;1 0 1 0 0
;1 0 1 1 empty
;1 1 0 0 +denormal
;1 1 1 0 denormal
_ous equ 10
;0 x87 stack underflow, if an x87 register stack fault was detected.
;1 x87 stack overflow, if an x87 register stack fault was detected.
cmp0 equ 11
;0 0 0 0 ST(0) > source
;0 0 0 1 ST(0) < source
;1 0 0 0 ST(0) = source
;1 1 0 1 Operands were unordered
ex00 equ 12
;0 No precision exception occurred.
;0 x87 stack underflow, if an x87 register stack fault was detected.
;0 Result was rounded down, if a precision exception was detected.
;1 Result was rounded up, if a precision exception was detected.
ex01 equ 13
;1 x87 stack overflow, if an x87 register stack fault was detected.
;0 If no other flags are set.
ex02 equ 14
;0 x87 stack underflow, if an x87 register stack fault was detected.
;1 x87 stack overflow, if an x87 register stack fault was detected.
;0 No x87 stack fault.
ex03 equ 15
;0 x87 stack underflow, if an x87 register stack fault was detected.
;1 x87 stack overflow, if an x87 register stack fault was detected.
;0 Result was rounded down, if a precision exception was detected.
;1 Result was rounded up, if a precision exception was detected.
MaxInstrLen equ 15
curr_id=MaxInstrLen+1
enum VERBOSE_PFX,INVALID_INSTRUCTION, INVALID_OPERAND, OPCODE_OUT_RANGE
enum UNKNOWN_MNEMONIC, ASM_DUMP, NOT_ALLOWED_LOCK, NOT_ALLOWED_REP
enum NOT_ALLOWED_REPXX, TOO_LONG_STR, TOO_MANY_ARGS,INSUFFICIENT_BUFFER
enum INVALID_IN_LM16,TOO_LARGE_ALTER_NUM,MODE_CHANGED_TO_16, MODE_CHANGED_TO_32
enum MODE_CHANGED_TO_64,BASE_CHANGED_BY_ORG, ASM_DIRECTIVE, ASM_DUMP_IB
enum ASM_OPTION, ASM_EQUATION, VSIB_ADDR16, VSIB_MODE
enum VSIB_RMEM, VSIB_SAME_REGS
FULL_OPCSIZE equ 32
STD_MNEM_SIZE equ 32
STD_OPERMNEM_SIZE equ 256
ALTM_STR_SIZE equ 128
;IsHeapStr
curr_id=0
enf MNEM_HEAP,OPER1_HEAP,OPER2_HEAP, OPER3_HEAP
enf OPER4_HEAP,OPER5_HEAP, MO_RANGES,ANALYSES_HEAP
;InitInstrEx dwFlags
curr_id=8
enf SINGLE_DASM
;DsmCtrl
curr_id=0
enf MODRM_RANGES_PRESENT,ANALYSES_PRESENT, OMIT_SHORT,OMIT_TYPE_SPEC
enf OMIT_DEFAULT_SEG, INDEX_BP
curr_id=9
enf OMIT_NEAR_PTR, LOADALLS, RJ_OFFSET, POP_CS, CALCENG,JUST_DIRECTIVE
enf JCC_SHORT_OPT, JCC_SHORT_U15, COFF_GEN
curr_id=26
enf FWAIT_APART,FULL_STR_MNEM,OFFSET_FLOAT,SKIP_DASM,ARCH_INTEL64,ARCH_AMD64
PLAIN_DASM equ (MNEM_HEAP or OPER1_HEAP or OPER2_HEAP or OPER3_HEAP or OPER4_HEAP or OPER5_HEAP or RJ_OFFSET)
ANALYSES_AREA equ (PLAIN_DASM or SINGLE_DASM)
STD_INSTR equ (PLAIN_DASM or MO_RANGES)
EXT_INSTR equ (STD_INSTR or ANALYSES_HEAP or CALCENG)
AltmBytes struc
TotalBytes BYTE ?
AlterOpcNum BYTE ?
OptAddr BYTE ?
PfxPerm BYTE ?
WasteBitFields BYTE ?
WastePfx BYTE 14 dup(?)
BYTE 5 dup(?)
AltmBytes ends
PALTM_BYTES TYPEDEF PTR AltmBytes
moRange struc
HighAddr DWORD ?
LowAddr DWORD ?
moRange ends
moRanges struc
CntRange ULONG ?
rng moRange {}
moRanges ends
pmoRanges TYPEDEF PTR moRanges
Features struc
Note BYTE ?
exNote BYTE ?
MnemOrd WORD ?
FirstOper BYTE ?
SecondOper BYTE ?
ThirdOper BYTE ?
FourthOper BYTE ?
FifthOper BYTE ?
iSet BYTE ?
Features ends
HANALYSES TYPEDEF PTR Analyses
HINB TYPEDEF PTR inbase
inbase struc
hBase HANDLE ? ;+0
RootInd ULONG64 ? ;+8
EquatesInd ULONG64 ? ;+10h
TextEqInd ULONG64 ? ;+18h
MacroEqsInd ULONG64 ? ;+20h
Next HINB ? ;+28h
inbase ends
PINCPATH TYPEDEF PTR incpath
incpath struc
Path LPSTR ?
Next PINCPATH ?
incpath ends
REL_DATA struc
NumOfSym BYTE ?
BYTE ?,?,?,?,?,?,?
SymID ULONG64 255 dup(?)
REL_DATA ends
PREL_DATA TYPEDEF PTR REL_DATA
Instruction struc
MajorVersa BYTE ? ;out + 0h
MinorVersa BYTE ?
OpcNum BYTE ?
OpcTotal BYTE ?
DsmCtrl DWORD ? ;in +04h
CodePtr PVOID ? ;in/out + 08h
NextPtr PVOID ? ;in/out + 10h
AlterBase QWORD ? ;in/out + 18h
MnemOperType LPSTR ? ;out + 20h
Mnemonic LPSTR ? ;out + 28h
Oper1Mnemonic LPSTR ? ;+ 30h
Oper2Mnemonic LPSTR ? ;+ 38h
Oper3Mnemonic LPSTR ? ;+ 40h
Oper4Mnemonic LPSTR ? ;+ 48h
Oper5Mnemonic LPSTR ? ;+ 50h
RemnCode ULONG64 ? ;in/out ;+ 58h
ModrmOffsets PVOID ? ;+ 60h
hAnalyses HANALYSES ? ;+ 68h
Mode BYTE ? ;in + 70h
IsHeapStr BYTE ? ;+ 71h
FullOpcode BYTE FULL_OPCSIZE dup(?) ;+ 72h
;Legacy prefixes
SegOver BYTE ? ;out + 92h
RepPfx BYTE ? ;out + 93h
PfxCnt BYTE ? ;out + 94h
;REX prefix
union
RexPfx BYTE ? ;out + 95h
XopRex BYTE ?
VexRex BYTE ?
ends
union
XopSec BYTE ? ;+ 96h
VexSec BYTE ?
ends
DefaultAddrSize BYTE ? ;out + 97h
;ModRM
mode BYTE ? ;out + 98h
reg BYTE ? ;out + 99h
rmem BYTE ? ;out + 9Ah
;SIB
Scale BYTE ? ;out + 9Bh
Index BYTE ? ;out + 9Ch
Base BYTE ? ;out + 9Dh
ModRmAddress BYTE 32 dup(?) ;+ 9Eh
DefaultOperSize WORD ? ;out +0BEh
iFlags PVOID ? ;out +0C0h
x87Condition x87c <> ;out +0C8h
union
mOffset DWORD ? ;out +0D0h
AddrBias DWORD ? ;out +0D0h
ends
iMxcsr DWORD ? ;out +0D4h
DataSegMnem DWORD ? ;out +0D8h
Status DWORD ? ;out +0DCh
InstrLen DWORD ? ;out +0E0h
Opflags DWORD ? ;out +0E4h
union
OpFeatures Features <> ;out +0E8h
oft Features <>
ends
OptAddr BYTE ? ;out +0F2h
Filler BYTE ? ;+0F3h
Opflags2 DWORD ? ;out +0F4h
hInb HINB ? ;+0F8h
hCalc HANDLE ? ;in +100h
EvalFlags DWORD ? ;in +108h
AlterOpc11 BYTE ? ;out +10Ch
AlterOpcxx BYTE ? ;out +10Dh
OpcNum2 BYTE ? ;out +10Eh
OpcTotal2 BYTE ? ;out +10Fh
EquatesInd ULONG64 ? ;in +110h
union
RipOffset LPSTR ? ;out +118h
JAddrOffset LPSTR ?
ends
JccPfxFiller BYTE ?
BYTE ?,?,?,?,?,?,?
fn1_eax DWORD ? ;+128h
fn1_ebx DWORD ? ;+12Ch
fn1_ecx DWORD ? ;+130h
fn1_edx DWORD ? ;+134h
fn7_eax DWORD ? ;+138h
fn7_ebx DWORD ? ;+13Ch
fn7_ecx DWORD ? ;+140h
fn7_edx DWORD ? ;+144h
fn80000001_eax DWORD ? ;+148h
fn80000001_ebx DWORD ? ;+14Ch
fn80000001_ecx DWORD ? ;+150h
fn80000001_edx DWORD ? ;+154h
InitialCodePtr PVOID ? ;+158h
InitialCodeSize ULONG64 ? ;+160h
RelData PREL_DATA ? ;+168h
Instruction ends ;170h-bytes
Inn TYPEDEF Instruction
HINSTR TYPEDEF PTR Instruction
Analyses struc
Analyzand HINSTR ?
AnalysesArea HINSTR ?
AltmMnemonic CHAR ALTM_STR_SIZE dup(?)
AlterOpc BYTE ?
PfxPerm BYTE ?
WastePfx BYTE 14 dup(?)
WasteBitFields BYTE ?
LegacyCnt BYTE ?
BYTE 6 dup(?)
Analyses ends
curr_id=0
enf IS_TEXT,REDEFINE_NUM,REDEFINE_TEXT,REDEFINE_MACRO_EQ,IS_MACRO_EQ,IS_EQU_NUM
;Modes
curr_id=0
enum LONG_MODE,LEGACY_MODE32,LEGACY_MODE16
;Opcodes flags
curr_id=0
enf OPER66OVER, ADDR67OVER, LOCK_PFX, MODRM
enf SIB_BYTE, MOFFSET, RIP_ADDR, ERASE_SECOND_N
enf JADDR16_BUT_NOT_LM16, MOD11_OPCODE, PFX_F3, JADDR
enf OPER2_MEM, REG_OPCODE,RMEM_OPCODE, F2F366_OPCODE
enf F2F3_OPCODE,WASTE_PFX_SET, FLAG_0F,OPSZ_NOT_INFERRS
enf CS_D_NA, FLAG_38, FLAG_3A, CPL3_ALLOWED
enf VEX_PFX, XOP_PFX, VSIB, OPER1_MEM
enf OPER3_MEM, OPER4_MEM, SVEX_PFX
;Opcodes2 flags
curr_id=16
enf XACQUIRE_FLAG, XRELEASE_FLAG
enf DOLLAR_FLAG,CONST_REDEFINED
curr_id=0
enf REQ_TYPE,I_CPL3,A_USES,S_USES,O_USES,RE2_USES,R66_ANNIH
enf RB_USES,RR_USES,RW_USES,RE_USES,L_MBZ,M256_INT,OP5_PRES,VSIBA,LIG
;dwFlags
curr_id=0
enf OFFSETS_COL, HEX_COL, RIP_ADDRS,REL_ADDRS
enf CR,NOT_TABBED, LF, ALT_MNEM
enf REL_FFFF_ADDRS, DB_STRING,ADDR_COMPACT
CR_LF equ (CR or LF or ALT_MNEM)
STD_MNEM equ (CR_LF or OFFSETS_COL or HEX_COL or ALT_MNEM or ADDR_COMPACT)
RIP_REL equ (RIP_ADDRS or REL_ADDRS or CR_LF or ALT_MNEM)
STD_CLEAR_MNEM equ (NOT_TABBED or ALT_MNEM)
RIP_REL_LF equ (RIP_ADDRS or REL_ADDRS or LF or ALT_MNEM)
RIP_REL_FFFF equ (RIP_ADDRS or REL_ADDRS or CR_LF or ALT_MNEM or REL_FFFF_ADDRS)
curr_id=0
enum None
enum m2z, Ub, Ib, Iz, Ubm, Sb, Uw, _CL
enum Iv, Id
enum Mb_Rd_q, Mw_Rv, M2ps, Ed_q, Wsd, Yh
enum Ed, Wss, Md, Ww, Wq, Mq, Mw_Rd, Gd_q
enum vGd_q, Wdq, Vpd, Wb, Wd, Mdq, Mpd, W2ps
enum Vps, Vss, Vsd, iVpb, iVpw, iVpd, iVpq
enum Yps, Ypd, Yss, Ysd, iYpb, iYpw, iYpd, iYpq
enum vVps, vVpd, vVss, vVsd, viVpb, viVpw, viVpd, viVpq
enum vYps, vYpd, vYss, vYsd, viYpb, viYpw, viYpd, viYpq
enum VRps, VRpd, VRq, VRdq, iWpb, iWpw, iWpd, iWpq
enum mYps, mYpd, imYpb, imYpw, imYpd, imYpq
enum bVps, bVpd, bVss, bVsd, biVpb, biVpw, biVpd, biVpq
enum bYps, bYpd, bYss, bYsd, biYpb, biYpw, biYpd, biYpq
enum YRdq, Mh, Mss, Msd, Mps, LMps, YRps, LMpd
enum LMdq, Mqq, __Mod, Mqd, YRpd, V2ps, iVRpw, iVpo
enum mYh, iWpo, Vq, Vdq, Vd_q, Wps, Wpd, Vd
enum iVRpd, iVRpb, iVRpq, iYRpb, iYRpw, iYRpd, iYRpq, iW2pd
enum Whps, W4hps, W8pb, W4pb, W2pb, W4pw, W2pw
enum Pd, Pq, iPpb, iQpb, iPpw, iQpw, iPpd, iQpd
enum iP4pb, iQ4pb, iP2pw, iQ2pw, iPd, iQd
enum Eb, Ew, Ev, _Eq, Gb, Gw, Gd, Gv
enum iPRpd, iPRpb, iPRpw, iYpo
enum Pd_q, Qq, PRq, mem80dec, m32real, m64real, mem80real
enum m16int, m32int, m64int, m16
enum M, Ma, Mp, Mb
enum Mw, Mv, Ms, Mq_Mdq, Mw_Rd_q
enum Md_q, Rv, Rd_q, Mb_Rd, Sw
enum Td_q
enum Cd_q, Dd_q, _st0, _st1, _st2, _st3, _st4, _st5
enum _st6, _st7, env14_28, env94_108, vmcb, Gzv, UnkModRM
enum Ob, Ov, Ap
enum _Jb, Yb, Xb, Yz, Xz, Yv, Xv, rAX_r8
enum rCX_r9, rDX_r10, rBX_r11, rSP_r12, rBP_r13, rSI_r14, rDI_r15, AL_r8b
enum CL_r9b, DL_r10b, BL_r11b, AH_r12b, CH_r13b, DH_r14b, BH_r15b, _rAX
enum _eAX, _eCX, _eDX, _eBX, _eSP, _eBP, _eSI, _eDI
enum _AL, _AX, _DX, _ES, _CS, _SS, _DS, _FS
enum _GS, One, xb, _Jz, _eax, _ecx
MIN_MODRM equ Mb_Rd_q
MAX_MODRM equ UnkModRM
idm macro String:VARARG
LOCAL ParmLen1,DefStr
% FOR parm,<String>
DefStr CATSTR <id_&parm>,< equ >,@CatStr(%MnemCnt)
%DefStr
MnemCnt=MnemCnt+1
ENDM
endm
MnemCnt=0
;MnemonicsIds
idm add,push,pop,or,adc,sbb,and,daa ; 0, 1, 2, 3, 4, 5, 6, 7
idm sub,das,xor,aaa,cmp,aas,inc,dec ; 8, 9, 10, 11, 12, 13, 14, 15
idm pushad,pusha,popad,popa,bound,movsxd,arpl,imul ; 16, 17, 18, 19, 20, 21, 22, 23
idm insb,insd,insw,outsb,outsd,outsw,jo,jno ; 24, 25, 26, 27, 28, 29, 30, 31
idm jb,jnb,jz,jnz,jbe,ja,js,jns ; 32, 33, 34, 35, 36, 37, 38, 39
idm jp,jnp,jl,jnl,jle,jg,test,xchg ; 40, 41, 42, 43, 44, 45, 46, 47
idm mov,lea,nop,pause,cdqe,cwde,cbw,cqo ; 48, 49, 50, 51, 52, 53, 54, 55
idm cdq,cwd,call,wait,pushfq,pushfd,pushf,popfq ; 56, 57, 58, 59, 60, 61, 62, 63
idm popfd,popf,sahf,lahf,movsb,movsq,movsd,movsw ; 64, 65, 66, 67, 68, 69, 70, 71
idm cmpsb,cmpsq,cmpsd,cmpsw,stosb,stosq,stosd,stosw ; 72, 73, 74, 75, 76, 77, 78, 79
idm lodsb,lodsq,lodsd,lodsw,scasb,scasq,scasd,scasw ; 80, 81, 82, 83, 84, 85, 86, 87
idm retn,les,lds,enter,leave,retf,int3,int ; 88, 89, 90, 91, 92, 93, 94, 95
idm into,iretq,iretd,iret,aam,aad,salc,xlat ; 96, 97, 98, 99,100,101,102,103
idm loopz,loopzd,loopzw,jrcxz,jecxz,jcxz,in,out ;104,105,106,107,108,109,110,111
idm jmp,int1,hlt,cmc,clc,stc,cli,sti ;112,113,114,115,116,117,118,119
idm cld,std,movs,rol,ror,rcl,rcr,shl ;120,121,122,123,124,125,126,127
idm shr,sal,sar,not,neg,mul,div,idiv ;128,129,130,131,132,133,134,135
idm sldt,str,lldt,ltr,verr,verw,sgdt,sidt ;136,137,138,139,140,141,142,143
idm lgdt,lidt,smsw,lmsw,invlpg,swapgs,rdtscp,vmrun ;144,145,146,147,148,149,150,151
idm vmmcall,vmload,vmsave,stgi,clgi,skinit,invlpga,monitor ;152,153,154,155,156,157,158,159
idm mwait,lfence,mfence,sfence,bt,bts,btr,btc ;160,161,162,163,164,165,166,167
idm cmpxchg16b,cmpxchg8b,psrlw,psraw,psllw,psrld,psrad,pslld ;168,169,170,171,172,173,174,175
idm psrlq,psllq,psrldq,pslldq,fxsave64,fxsave,ldmxcsr,stmxcsr ;176,177,178,179,180,181,182,183
idm clflush,prefetchnta,prefetcht0,prefetcht1,prefetcht2,extrq,prefetch,lar ;184,185,186,187,188,189,190,191
idm lsl,syscall,clts,sysenter,invd,wbinvd,ud2,femms ;192,193,194,195,196,197,198,199
idm movups,movss,movupd,movlps,movhlps,movsldup,movlpd,movddup ;200,201,202,203,204,205,206,207
idm unpcklps,unpcklpd,unpckhps,unpckhpd,movhps,movlhps,movshdup,movhpd ;208,209,210,211,212,213,214,215
idm movaps,movapd,cvtpi2ps,cvtsi2ss,cvtpi2pd,cvtsi2sd,movntps,movntss ;216,217,218,219,220,221,222,223
idm movntpd,movntsd,cvttps2pi,cvttss2si,cvttpd2pi,cvttsd2si,cvtps2pi,cvtss2si ;224,225,226,227,228,229,230,231
idm cvtpd2pi,cvtsd2si,ucomiss,ucomisd,comiss,comisd,rdtsc,wrmsr ;232,233,234,235,236,237,238,239
idm rdmsr,rdpmc,sysexitq,sysexit,cmovo,cmovno,cmovb,cmovnb ;240,241,242,243,244,245,246,247
idm cmovz,cmovnz,cmovbe,cmova,cmovs,cmovns,cmovp,cmovnp ;248,249,250,251,252,253,254,255
idm cmovl,cmovnl,cmovle,cmovg,movmskps,movmskpd,sqrtps,sqrtss ;256,257,258,259,260,261,262,263
idm sqrtpd,sqrtsd,rsqrtps,rsqrtss,rcpps,rcpss,andps,andpd ;264,265,266,267,268,269,270,271
idm andnps,andnpd,orps,orpd,xorps,xorpd,addps,addss ;272,273,274,275,276,277,278,279
idm addpd,addsd,mulps,mulss,mulpd,mulsd,cvtps2pd,cvtss2sd ;280,281,282,283,284,285,286,287
idm cvtpd2ps,cvtsd2ss,cvtdq2ps,cvttps2dq,cvtps2dq,subps,subss,subpd ;288,289,290,291,292,293,294,295
idm subsd,minps,minss,minpd,minsd,divps,divss,divpd ;296,297,298,299,300,301,302,303
idm divsd,maxps,maxss,maxpd,maxsd,punpcklbw,punpcklwd,punpckldq ;304,305,306,307,308,309,310,311
idm packsswb,pcmpgtb,pcmpgtw,pcmpgtd,packuswb,punpckhbw,punpckhwd,punpckhdq ;312,313,314,315,316,317,318,319
idm packssdw,punpcklqdq,punpckhqdq,movd,movq,movdqu,movdqa,pshufw ;320,321,322,323,324,325,326,327
idm pshufhw,pshufd,pshuflw,pcmpeqb,pcmpeqw,pcmpeqd,emms,insertq ;328,329,330,331,332,333,334,335
idm haddpd,haddps,hsubpd,hsubps,seto,setno,setb,setnb ;336,337,338,339,340,341,342,343
idm setz,setnz,setbe,seta,sets,setns,setp,setnp ;344,345,346,347,348,349,350,351
idm setl,setnl,setle,setg,cpuid,shld,rsm,shrd ;352,353,354,355,356,357,358,359
idm cmpxchg,lss,lfs,lgs,movzx,popcnt,bsf,bsr ;360,361,362,363,364,365,366,367
idm lzcnt,movsx,xadd,cmpps,cmpss,cmppd,movnti,pinsrw ;368,369,370,371,372,373,374,375
idm pextrw,shufps,shufpd,bswap,addsubpd,addsubps,paddq,pmullw ;376,377,378,379,380,381,382,383
idm movq2dq,movdq2q,pmovmskb,psubusb,psubusw,pminub,pand,paddusb ;384,385,386,387,388,389,390,391
idm paddusw,pmaxub,pandn,pavgb,pavgw,pmulhuw,pmulhw,cvtdq2pd ;392,393,394,395,396,397,398,399
idm cvttpd2dq,cvtpd2dq,movntq,movntdq,psubsb,psubsw,pminsw,por ;400,401,402,403,404,405,406,407
idm paddsb,paddsw,pmaxsw,pxor,lddqu,pmuludq,pmaddwd,psadbw ;408,409,410,411,412,413,414,415
idm maskmovq,maskmovdqu,psubb,psubw,psubd,psubq,paddb,paddw ;416,417,418,419,420,421,422,423
idm paddd,pfcmpge,pfmin,pfrcp,pfrsqrt,pfcmpgt,pfmax,pfrcpit1 ;424,425,426,427,428,429,430,431
idm pfrsqit1,pfcmpeq,pfmul,pfrcpit2,pmulhrw,pi2fw,pi2fd,pf2iw ;432,433,434,435,436,437,438,439
idm pf2id,pfnacc,pfpnacc,pfsub,pfadd,pfsubr,pfacc,pswapd ;440,441,442,443,444,445,446,447
idm pavgusb,fadd,fmul,fcom,fcomp,fsub,fsubr,fdiv ;448,449,450,451,452,453,454,455
idm fdivr,fld,fst,fstp,fldenv,fldcw,fnstenv,fstenv ;456,457,458,459,460,461,462,463
idm fnstcw,fstcw,fxch,fnop,fchs,fld1,f2xm1,fprem ;464,465,466,467,468,469,470,471
idm fabs,fldl2t,fyl2x,fyl2xp1,fldl2e,fptan,fsqrt,fldpi ;472,473,474,475,476,477,478,479
idm fpatan,fsincos,ftst,fldlg2,fxtract,frndint,fxam,fldln2 ;480,481,482,483,484,485,486,487
idm fprem1,fscale,fldz,fdecstp,fsin,fincstp,fcos,fiadd ;488,489,490,491,492,493,494,495
idm fimul,ficom,ficomp,fisub,fisubr,fidiv,fidivr,fcmovb ;496,497,498,499,500,501,502,503
idm fcmove,fcmovbe,fcmovu,fucompp,fild,fisttp,fist,fistp ;504,505,506,507,508,509,510,511
idm fcmovnb,fcmovne,fcmovnbe,fcmovnu,fucomi,fcomi,fnclex,fclex ;512,513,514,515,516,517,518,519
idm fninit,finit,frstor,fnsave,fsave,fnstsw,fstsw,ffree ;520,521,522,523,524,525,526,527
idm fucom,fucomp,faddp,fmulp,fsubrp,fsubp,fdivrp,fdivp ;528,529,530,531,532,533,534,535
idm fcompp,fbld,fbstp,fucomip,fcomip,ins,scas,outs ;536,537,538,539,540,541,542,543
idm loopnz,loopnzd,loopnzw,loop,loopd,loopw,cmps,xlatb ;544,545,546,547,548,549,550,551
idm prefetchw,lods,stos,getsec,retnw,retnd,enterw,enterd ;552,553,554,555,556,557,558,559
idm leavew,leaved,vmread,vmwrite,vmcall,vmlaunch,vmresume,vmxoff ;560,561,562,563,564,565,566,567
idm vmptrld,vmptrst,vmclear,vmxon,invept,invvpid,xgetbv,xsetbv ;568,569,570,571,572,573,574,575
idm xsave64,xsave,xrstor64,xrstor,pshufb,phaddw,phaddd,phaddsw ;576,577,578,579,580,581,582,583
idm pmaddubsw,phsubw,phsubd,phsubsw,psignb,psignw,psignd,pmulhrsw ;584,585,586,587,588,589,590,591
idm pblendvb,blendvps,blendvpd,ptest,pabsb,pabsw,pabsd,pmovsxbw ;592,593,594,595,596,597,598,599
idm pmovsxbd,pmovsxbq,pmovsxwd,pmovsxwq,pmovsxdq,pmuldq,pcmpeqq,movntdqa ;600,601,602,603,604,605,606,607
idm packusdw,pmovzxbw,pmovzxbd,pmovzxbq,pmovzxwd,pmovzxwq,pmovzxdq,pcmpgtq ;608,609,610,611,612,613,614,615
idm pminsb,pminsd,pminuw,pminud,pmaxsb,pmaxsd,pmaxuw,pmaxud ;616,617,618,619,620,621,622,623
idm pmulld,phminposuw,aesimc,aesenc,aesenclast,aesdec,aesdeclast,movbe ;624,625,626,627,628,629,630,631
idm crc32,roundps,roundpd,blendps,blendpd,pblendw,aeskeygenassist,dpps ;632,633,634,635,636,637,638,639
idm dppd,mpsadbw,pclmulqdq,pcmpestrm,pcmpestri,pcmpistrm,pcmpistri,roundss ;640,641,642,643,644,645,646,647
idm roundsd,palignr,pextrb,pextrq,pextrd,extractps,pinsrb,insertps ;648,649,650,651,652,653,654,655
idm pinsrq,pinsrd,cmpeqpd,cmpltpd,cmplepd,cmpunordpd,cmpneqpd,cmpnltpd ;656,657,658,659,660,661,662,663
idm cmpnlepd,cmpordpd,cmpeqps,cmpltps,cmpleps,cmpunordps,cmpneqps,cmpnltps ;664,665,666,667,668,669,670,671
idm cmpnleps,cmpordps,cmpeqss,cmpltss,cmpless,cmpunordss,cmpneqss,cmpnltss ;672,673,674,675,676,677,678,679
idm cmpnless,cmpordss,cmpeqsd,cmpltsd,cmplesd,cmpunordsd,cmpneqsd,cmpnltsd ;680,681,682,683,684,685,686,687
idm cmpnlesd,cmpordsd,fxrstor64,fxrstor,jmpe,retfw,retfd,retfq ;688,689,690,691,692,693,694,695
idm vfmaddss,vfmaddsubpd,vfmaddsubps,vfmsubaddpd,vfmsubaddps,vfmsubpd,vfmsubps,vfmsubsd ;696,697,698,699,700,701,702,703
idm vfmsubss,vfnmaddpd,vfnmaddps,vfnmaddsd,vfnmaddss,vfnmsubpd,vfnmsubps,vfnmsubsd ;704,705,706,707,708,709,710,711
idm vfnmsubss,vpermil2pd,vpermil2ps,vfmaddpd,vfmaddps,vfmaddsd,vfrczpd,vfrczps ;712,713,714,715,716,717,718,719
idm vfrczss,vfrczsd,vpcmov,vpcomb,vpcomltb,vpcomleb,vpcomgtb,vpcomgeb ;720,721,722,723,724,725,726,727
idm vpcomeqb,vpcomneqb,vpcomfalseb,vpcomtrueb,vpcomd,vpcomltd,vpcomled,vpcomgtd ;728,729,730,731,732,733,734,735
idm vpcomged,vpcomeqd,vpcomneqd,vpcomfalsed,vpcomtrued,vpcomq,vpcomltq,vpcomleq ;736,737,738,739,740,741,742,743
idm vpcomgtq,vpcomgeq,vpcomeqq,vpcomneqq,vpcomfalseq,vpcomtrueq,vpcomub,vpcomltub ;744,745,746,747,748,749,750,751
idm vpcomleub,vpcomgtub,vpcomgeub,vpcomequb,vpcomnequb,vpcomfalseub,vpcomtrueub,vpcomud ;752,753,754,755,756,757,758,759
idm vpcomltud,vpcomleud,vpcomgtud,vpcomgeud,vpcomequd,vpcomnequd,vpcomfalseud,vpcomtrueud ;760,761,762,763,764,765,766,767
idm vpcomuq,vpcomltuq,vpcomleuq,vpcomgtuq,vpcomgeuq,vpcomequq,vpcomnequq,vpcomfalseuq ;768,769,770,771,772,773,774,775
idm vpcomtrueuq,vpcomuw,vpcomltuw,vpcomleuw,vpcomgtuw,vpcomgeuw,vpcomequw,vpcomnequw ;776,777,778,779,780,781,782,783
idm vpcomfalseuw,vpcomtrueuw,vpcomw,vpcomltw,vpcomlew,vpcomgtw,vpcomgew,vpcomeqw ;784,785,786,787,788,789,790,791
idm vpcomneqw,vpcomfalsew,vpcomtruew,vphaddbw,vphaddbd,vphaddbq,vphadddq,vphaddubw ;792,793,794,795,796,797,798,799
idm vphaddubd,vphaddubq,vphaddudq,vphadduwd,vphadduwq,vphaddwd,vphaddwq,vphsubbw ;800,801,802,803,804,805,806,807
idm vphsubdq,vphsubwd,vpmacsdd,vpmacsdqh,vpmacsdql,vpmacssdd,vpmacssdqh,vpmacssdql ;808,809,810,811,812,813,814,815
idm vpmacsswd,vpmacssww,vpmacswd,vpmacsww,vpmadcsswd,vpmadcswd,vpperm,vprotb ;816,817,818,819,820,821,822,823
idm vprotd,vprotq,vprotw,vpshab,vpshad,vpshaq,vpshaw,vpshlb ;824,825,826,827,828,829,830,831
idm vpshld,vpshlq,vpshlw,call64,jmp64,vaddpd,vaddps,vaddsd ;832,833,834,835,836,837,838,839
idm vaddss,vaddsubpd,vaddsubps,vaesenc,vaesenclast,vaesdec,vaesdeclast,vaesimc ;840,841,842,843,844,845,846,847
idm vaeskeygenassist,vandpd,vandps,vandnpd,vandnps,vblendpd,vblendps,vblendvpd ;848,849,850,851,852,853,854,855
idm vblendvps,vbroadcastss,vbroadcastsd,vbroadcastf128,vcmppd,vcmpps,vcmpsd,vcmpss ;856,857,858,859,860,861,862,863
idm vcomisd,vcomiss,vcvtdq2pd,vcvtdq2ps,vcvtpd2dq,vcvtpd2ps,vcvtps2dq,vcvtps2pd ;864,865,866,867,868,869,870,871
idm vcvtsd2si,vcvtsd2ss,vcvtsi2sd,vcvtsi2ss,vcvtss2sd,vcvtss2si,vcvttpd2dq,vcvttps2dq ;872,873,874,875,876,877,878,879
idm vcvttsd2si,vcvttss2si,vdivpd,vdivps,vdivsd,vdivss,vdppd,vdpps ;880,881,882,883,884,885,886,887
idm vextractf128,vextractps,vhaddpd,vhaddps,vhsubpd,vhsubps,vinsertf128,vinsertps ;888,889,890,891,892,893,894,895
idm vlddqu,vldmxcsr,vmaskmovdqu,vmaskmovps,vmaskmovpd,vmaxpd,vmaxps,vmaxsd ;896,897,898,899,900,901,902,903
idm vmaxss,vminpd,vminps,vminsd,vminss,vmovapd,vmovaps,vmovq ;904,905,906,907,908,909,910,911
idm vmovd,vmovddup,vmovdqa,vmovdqu,vmovlps,vmovhlps,vmovhps,vmovlhps ;912,913,914,915,916,917,918,919
idm vmovlpd,vmovhpd,vmovmskpd,vmovmskps,vmovntdq,vmovntdqa,vmovntpd,vmovntps ;920,921,922,923,924,925,926,927
idm vmovsd,vmovshdup,vmovsldup,vmovss,vmovupd,vmovups,vmpsadbw,vmulpd ;928,929,930,931,932,933,934,935
idm vmulps,vmulsd,vmulss,vorpd,vorps,vpabsb,vpabsw,vpabsd ;936,937,938,939,940,941,942,943
idm vpacksswb,vpackssdw,vpackuswb,vpackusdw,vpaddb,vpaddw,vpaddd,vpaddq ;944,945,946,947,948,949,950,951
idm vpaddsb,vpaddsw,vpaddusb,vpaddusw,vpalignr,vpand,vpandn,vpavgb ;952,953,954,955,956,957,958,959
idm vpavgw,vpblendvb,vpblendw,vpclmulqdq,vpcmpestri,vpcmpestrm,vpcmpistri,vpcmpistrm ;960,961,962,963,964,965,966,967
idm vpcmpeqb,vpcmpeqw,vpcmpeqd,vpcmpeqq,vpcmpgtb,vpcmpgtw,vpcmpgtd,vpcmpgtq ;968,969,970,971,972,973,974,975
idm vpermilpd,vpermilps,vperm2f128,vpextrb,vpextrw,vphaddw,vphaddd,vphaddsw ;976,977,978,979,980,981,982,983
idm vphminposuw,vphsubw,vphsubd,vphsubsw,vpinsrb,vpinsrw,vpinsrq,vpinsrd ;984,985,986,987,988,989,990,991
idm vpmaddwd,vpmaddubsw,vpmaxsb,vpmaxsw,vpmaxsd,vpmaxub,vpmaxuw,vpmaxud ;992,993,994,995,996,997,998,999
idm vpminsb,vpminsw,vpminsd,vpminub,vpminuw,vpminud,vpmovmskb,vpmovsxbw ;1000,1001,1002,1003,1004,1005,1006,1007
idm vpmovsxbd,vpmovzxbw,vpmovzxbd,vpmulhuw,vpmulhrsw,vpmulhw,vpmullw,vpmulld ;1008,1009,1010,1011,1012,1013,1014,1015
idm vpmuludq,vpmuldq,vpor,vpsadbw,vpshufb,vpshufd,vpshufhw,vpshuflw ;1016,1017,1018,1019,1020,1021,1022,1023
idm vpsignb,vpsignw,vpsignd,vpslldq,vpsrldq,vpsllw,vpslld,vpsraw ;1024,1025,1026,1027,1028,1029,1030,1031
idm vpsrad,vpsrlw,vpsrld,vptest,vtestps,vtestpd,vpsubb,vpsubw ;1032,1033,1034,1035,1036,1037,1038,1039
idm vpsubd,vpsubq,vpsubsb,vpsubsw,vpsubusb,vpsubusw,vpunpckhbw,vpunpckhwd ;1040,1041,1042,1043,1044,1045,1046,1047
idm vpunpckhdq,vpunpckhqdq,vpunpcklbw,vpunpcklwd,vpunpckldq,vpunpcklqdq,vpxor,vrcpps ;1048,1049,1050,1051,1052,1053,1054,1055
idm vrcpss,vrsqrtps,vrsqrtss,vroundpd,vroundps,vroundsd,vroundss,vshufpd ;1056,1057,1058,1059,1060,1061,1062,1063
idm vshufps,vsqrtpd,vsqrtps,vsqrtsd,vsqrtss,vstmxcsr,vsubpd,vsubps ;1064,1065,1066,1067,1068,1069,1070,1071
idm vsubsd,vsubss,vucomisd,vucomiss,vunpckhpd,vunpckhps,vunpcklpd,vunpcklps ;1072,1073,1074,1075,1076,1077,1078,1079
idm vxorpd,vxorps,vzeroall,vzeroupper,vfmadd132pd,vfmadd132ps,vfmadd213pd,vfmadd213ps ;1080,1081,1082,1083,1084,1085,1086,1087
idm vfmadd231pd,vfmadd231ps,vfmadd132sd,vfmadd132ss,vfmadd213sd,vfmadd213ss,vfmadd231sd,vfmadd231ss ;1088,1089,1090,1091,1092,1093,1094,1095
idm vfmaddsub132pd,vfmaddsub132ps,vfmaddsub213pd,vfmaddsub213ps,vfmaddsub231pd,vfmaddsub231ps,vfmsubadd132pd,vfmsubadd132ps ;1096,1097,1098,1099,1100,1101,1102,1103
idm vfmsubadd213pd,vfmsubadd213ps,vfmsubadd231pd,vfmsubadd231ps,vfmsub132pd,vfmsub132ps,vfmsub213pd,vfmsub213ps ;1104,1105,1106,1107,1108,1109,1110,1111
idm vfmsub231pd,vfmsub231ps,vfmsub132sd,vfmsub132ss,vfmsub213sd,vfmsub213ss,vfmsub231sd,vfmsub231ss ;1112,1113,1114,1115,1116,1117,1118,1119
idm vfnmadd132pd,vfnmadd132ps,vfnmadd213pd,vfnmadd213ps,vfnmadd231pd,vfnmadd231ps,vfnmadd132sd,vfnmadd132ss ;1120,1121,1122,1123,1124,1125,1126,1127
idm vfnmadd213sd,vfnmadd213ss,vfnmadd231sd,vfnmadd231ss,vfnmsub132pd,vfnmsub132ps,vfnmsub213pd,vfnmsub213ps ;1128,1129,1130,1131,1132,1133,1134,1135
idm vfnmsub231pd,vfnmsub231ps,vfnmsub132sd,vfnmsub132ss,vfnmsub213sd,vfnmsub213ss,vfnmsub231sd,vfnmsub231ss ;1136,1137,1138,1139,1140,1141,1142,1143
idm vcmpeqpd,vcmpltpd,vcmplepd,vcmpunordpd,vcmpneqpd,vcmpnltpd,vcmpnlepd,vcmpordpd ;1144,1145,1146,1147,1148,1149,1150,1151
idm vcmpeq_uqpd,vcmpnge_uspd,vcmpngt_uspd,vcmpfalse_oqpd,vcmpneq_oqpd,vcmpge_ospd,vcmpgt_ospd,vcmptrue_uqpd ;1152,1153,1154,1155,1156,1157,1158,1159
idm vcmpeq_ospd,vcmplt_oqpd,vcmple_oqpd,vcmpunord_spd,vcmpneq_uspd,vcmpnlt_uqpd,vcmpnle_uqpd,vcmpord_spd ;1160,1161,1162,1163,1164,1165,1166,1167
idm vcmpeq_uspd,vcmpnge_uqpd,vcmpngt_uqpd,vcmpfalse_ospd,vcmpneq_ospd,vcmpge_oqpd,vcmpgt_oqpd,vcmptrue_uspd ;1168,1169,1170,1171,1172,1173,1174,1175
idm vcmpeqps,vcmpltps,vcmpleps,vcmpunordps,vcmpneqps,vcmpnltps,vcmpnleps,vcmpordps ;1176,1177,1178,1179,1180,1181,1182,1183
idm vcmpeq_uqps,vcmpnge_usps,vcmpngt_usps,vcmpfalse_oqps,vcmpneq_oqps,vcmpge_osps,vcmpgt_osps,vcmptrue_uqps ;1184,1185,1186,1187,1188,1189,1190,1191
idm vcmpeq_osps,vcmplt_oqps,vcmple_oqps,vcmpunord_sps,vcmpneq_usps,vcmpnlt_uqps,vcmpnle_uqps,vcmpord_sps ;1192,1193,1194,1195,1196,1197,1198,1199
idm vcmpeq_usps,vcmpnge_uqps,vcmpngt_uqps,vcmpfalse_osps,vcmpneq_osps,vcmpge_oqps,vcmpgt_oqps,vcmptrue_usps ;1200,1201,1202,1203,1204,1205,1206,1207
idm vcmpeqsd,vcmpltsd,vcmplesd,vcmpunordsd,vcmpneqsd,vcmpnltsd,vcmpnlesd,vcmpordsd ;1208,1209,1210,1211,1212,1213,1214,1215
idm vcmpeq_uqsd,vcmpnge_ussd,vcmpngt_ussd,vcmpfalse_oqsd,vcmpneq_oqsd,vcmpge_ossd,vcmpgt_ossd,vcmptrue_uqsd ;1216,1217,1218,1219,1220,1221,1222,1223
idm vcmpeq_ossd,vcmplt_oqsd,vcmple_oqsd,vcmpunord_ssd,vcmpneq_ussd,vcmpnlt_uqsd,vcmpnle_uqsd,vcmpord_ssd ;1224,1225,1226,1227,1228,1229,1230,1231
idm vcmpeq_ussd,vcmpnge_uqsd,vcmpngt_uqsd,vcmpfalse_ossd,vcmpneq_ossd,vcmpge_oqsd,vcmpgt_oqsd,vcmptrue_ussd ;1232,1233,1234,1235,1236,1237,1238,1239
idm vcmpeqss,vcmpltss,vcmpless,vcmpunordss,vcmpneqss,vcmpnltss,vcmpnless,vcmpordss ;1240,1241,1242,1243,1244,1245,1246,1247
idm vcmpeq_uqss,vcmpnge_usss,vcmpngt_usss,vcmpfalse_oqss,vcmpneq_oqss,vcmpge_osss,vcmpgt_osss,vcmptrue_uqss ;1248,1249,1250,1251,1252,1253,1254,1255
idm vcmpeq_osss,vcmplt_oqss,vcmple_oqss,vcmpunord_sss,vcmpneq_usss,vcmpnlt_uqss,vcmpnle_uqss,vcmpord_sss ;1256,1257,1258,1259,1260,1261,1262,1263
idm vcmpeq_usss,vcmpnge_uqss,vcmpngt_uqss,vcmpfalse_osss,vcmpneq_osss,vcmpge_oqss,vcmpgt_oqss,vcmptrue_usss ;1264,1265,1266,1267,1268,1269,1270,1271
idm vpclmullqlqdq,vpclmulhqlqdq,vpclmullqhdq,vpclmulhqhdq,pclmullqlqdq,pclmulhqlqdq,pclmullqhdq,pclmulhqhdq ;1272,1273,1274,1275,1276,1277,1278,1279
idm ffreep,fneni,feni,fndisi,fdisi,fnsetpm,fsetpm,frstpm ;1280,1281,1282,1283,1284,1285,1286,1287
idm fsaved,fsavew,fnsaved,fnsavew,frstord,frstorw,fldenvd,fldenvw ;1288,1289,1290,1291,1292,1293,1294,1295
idm fstenvd,fstenvw,fnstenvd,fnstenvw,vpsllq,vpsrlq,vpmovzxbq,vpmovzxdq ;1296,1297,1298,1299,1300,1301,1302,1302
idm vpmovzxwd,vpmovzxwq,vpmovsxbq,vpmovsxdq,vpmovsxwd,vpmovsxwq,vpextrq,vpextrd ;1304,1305,1306,1307,1308,1309,1310,1311
idm xsaveopt64,xsaveopt,sysretq,sysret,loadall286,loadall386,rdfsbase,rdgsbase ;1312,1313,1314,1315,1316,1317,1318,1319
idm rdrand,wrfsbase,wrgsbase,vcvtph2ps,vcvtps2ph,andn,bextr,blsi ;1320,1321,1322,1323,1324,1325,1326,1327
idm blsmsk,blsr,bzhi,mulx,pdep,pext,rorx,sarx ;1328,1329,1330,1331,1332,1333,1334,1335
idm shlx,shrx,tzcnt,invpcid,vpblendd,vpbroadcastb,vpbroadcastw,vpbroadcastd ;1336,1337,1338,1339,1340,1341,1342,1343
idm vpbroadcastq,vbroadcasti128,vpmaskmovq,vpmaskmovd,vpsllvq,vpsllvd,vpsravd,vpsrlvq ;1344,1345,1346,1347,1348,1349,1350,1351
idm vpsrlvd,vpermps,vpermd,vinserti128,vextracti128,vperm2i128,vpermpd,vpermq ;1352,1353,1354,1355,1356,1357,1358,1359
idm vgatherdpd,vgatherdps,vgatherqpd,vgatherqps,vpgatherdq,vpgatherdd,vpgatherqq,vpgatherqd ;1360,1361,1362,1363,1364,1365,1366,1367
idm blcfill,blci,blcic,blcmsk,blcs,blsfill,blsic,t1mskc ;1368,1369,1370,1371,1372,1373,1374,1375
idm tzmsk,llwpcb,lwpins,lwpval,slwpcb,xabort,xbegin,xend ;1376,1377,1378,1379,1380,1381,1382,1383
idm xtest,vmfunc,clac,stac,adcx,adox,rdseed ;1384,1385,1386,1387,1388,1389,1390
SizeOfImm3DNow equ 24
;Notes
curr_id=1
enum UD64, UD16_32, DIFF64_OPC, WaitPfx, x87, MNEM16_DIFF, MNEM16_DFUD64, TwoPDepBut66
enum TwoPDepend, NOW3D, MNEM_DIF, MNEM67_DIF, FGROUP, PfxDepend, FGROUP_MOD11
enum RegAvx, wm_ch, modmsd, WMBZ, sg_opc, wm_chf, W1
curr_id=1
enum no32op, j32no, framel,op_lock, op_rep,rep_n_e,CSdNA
enum m1l_avx, xop2op, xop3op, xop4op,nrev3op,nrev4op
curr_id=0
enum ilwp
enum ibasic, icmpxchgxb, icmovcc,i3dprefetch, iclflush, imovbe, icrc32, iprefetch
enum ilongmode, ipclmulqdq, iaes, ixsaverstr, i64sysctrl, itsc, irdtscp, irdwrmsr
enum isyscallret, ienterexit, isvm, isysctrl, iisysctrl, isse, issemmxext, issemmxbsc
enum issemmx, issebasic,ifxsaverstr, isse2, isse2mmx, ibasicsse2,isse2mmxext, isse2basic
enum isse3, isse3mmx, isse3fpu, issse3,issse3mmxex, isse4a, isse41, isse41bsc
enum isse42, immx, immxx87, immxbasic, ix87, ix87cmovcc, ix87mmx, i3dnow
enum i3dnowx87, i3dnowext, ivmx, ifma4, ixop, iavx, iaesavx, if16c
enum ifma3, ibmi1, ibmi2, iavx2, iaclmul, ifsgsbase, irdrand, itbm
enum irtm, ihle_rtm
SIGNED_INT equ 1 shl 0
PLUS_SIGN equ 1 shl 1
RADIX_LETTER equ 1 shl 2
FIRST_CIPHER equ 1 shl 3
STD_HEX equ (FIRST_CIPHER or RADIX_LETTER)
STD_BIN equ RADIX_LETTER
STD_OCT equ RADIX_LETTER
STD_DEC equ 0
SIGNED_HEX equ (FIRST_CIPHER or RADIX_LETTER or SIGNED_INT)
SIGNED_BIN equ (SIGNED_INT or RADIX_LETTER)
SIGNED_OCT equ (SIGNED_INT or RADIX_LETTER)
SIGNED_DEC equ SIGNED_INT
UPPER_CHAR equ 0DFh
DEFAULT_RADIX equ 1 shl 0
STD_MASM_NUM equ (DEFAULT_RADIX or FIRST_CIPHER)
MUST_BE_POSITIVE_OR_ZERO equ 1
DIVIDE_BY_ZERO equ 2
MUST_BEGINS_BY_CIPHER equ 3
OWORD_SIZE equ 1 shl 8
HWORD_SIZE equ 1 shl 9
DHWORD_SIZE equ 1 shl 10
QHWORD_SIZE equ 1 shl 11
INDIRECT_SHIFT_COUNT equ 1 shl 12
ERASE_MASM_QUOTES equ 1 shl 13
STD_MASM_NUM_128 equ (STD_MASM_NUM or OWORD_SIZE)
STD_MASM_NUM_256 equ (STD_MASM_NUM or HWORD_SIZE)
SIGNED_128 equ (SIGNED_INT or OWORD_SIZE)
SIGNED_256 equ (SIGNED_INT or HWORD_SIZE)
;Ïåðåñòàíîâêè ïðåôèêñîâ
pfx_lock equ 0 ;- 0F0h
pfx_66 equ 1 ;- 66h
pfx_67 equ 2 ;- 67h
pfx_seg equ 3 ;- 64h,65h (2Eh,3Eh,26h,36h)
pfx_f2_f3 equ 4 ;- 0F2h,0F3h
curr_id=0
enum c_ss0000,c_gp0001,c_gp0002,c_gp0003,c_pf0004,c_ac0005,c_np0006,c_ss0007
enum c_gp0008,c_gp0009,c_gp0010,c_gp0011,c_gp0012,c_gp0013,c_gp0014,c_ss0015
enum c_br0016,c_gp0017,c_ss0018,c_gp0019,c_ud0020,c_gp0021,c_gp0022,c_gp0023
enum c_gp0024,c_ss0025,c_gp0026,c_ud0027,c_ud0028,c_gp0029,c_gp0030,c_gp0031
enum c_gp0032,c_gp0033,c_gp0034,c_gp0035,c_db0036,c_ud0037,c_ud0038,c_gp0039
enum c_ts0040,c_ts0041,c_ts0042,c_ts0043,c_ts0044,c_ts0045,c_ts0046,c_np0047
enum c_ss0048,c_ss0049,c_gp0050,c_gp0051,c_gp0052,c_gp0053,c_gp0054,c_gp0055
enum c_gp0056,c_gp0057,c_gp0058,c_gp0059,c_gp0060,c_gp0061,c_nm0062,c_mf0063
enum c_gp0064,c_gp0065,c_ud0066,c_ud0067,c_ud0068,c_ud0069,c_nm0070,c_ud0071
enum c_xf0072,c_xf0073,c_xf0074,c_gp0075,c_gp0076,c_gp0077,c_ud0078,c_ud0079
enum c_ud0080,c_gp0081,c_gp0082,c_gp0083,c_gp0084,c_gp0085,c_gp0086,c_gp0087
enum c_gp0088,c_gp0089,c_gp0090,c_gp0091,c_gp0092,c_gp0093,c_gp0094,c_gp0095
enum c_gp0096,c_gp0097,c_gp0098,c_gp0099,c_gp0100,c_gp0101,c_gp0102,c_gp0103
enum c_np0104,c_ss0105,c_gp0106,c_gp0107,c_gp0108,c_gp0109,c_gp0110,c_gp0111
enum c_gp0112,c_gp0113,c_gp0114,c_gp0115,c_gp0116,c_np0117,c_gp0118,c_gp0119
enum c_gp0120,c_gp0121,c_gp0122,c_gp0123,c_gp0124,c_gp0125,c_gp0126,c_gp0127
enum c_of0128,c_bp0129,c_ts0130,c_ss0131,c_db0132,c_gp0133,c_de0134,c_gp0135
enum c_gp0136,c_gp0137,c_de0138,c_de0139,c_ud0140,c_np0141,c_gp0142,c_gp0143
enum c_gp0144,c_gp0145,c_gp0146,c_np0147,c_gp0148,c_gp0149,c_gp0150,c_gp0151
enum c_ud0152,c_gp0153,c_ud0154,c_ud0155,c_ud0156,c_gp0157,c_gp0158,c_ud0159
enum c_ud0160,c_gp0161,c_gp0162,c_ud0163,c_ud0164,c_ud0165,c_gp0166,c_gp0167
enum c_ud0168,c_ud0169,c_ud0170,c_ud0171,c_ud0172,c_gp0173,c_gp0174,c_ac0175
enum c_ud0176,c_ud0177,c_gp0178,c_ud0179,c_gp0180,c_ud0181,c_ud0182,c_gp0183
enum c_ud0184,c_ud0185,c_ud0186,c_ud0187,c_ud0188,c_ud0189,c_xf0190,c_xf0191
enum c_xf0192,c_ud0193,c_gp0194,c_gp0195,c_gp0196,c_ud0197,c_ud0198,c_gp0199
enum c_gp0200,c_ud0201,c_gp0202,c_gp0203,c_ud0204,c_xf0205,c_xf0206,c_xf0207
enum c_xf0208,c_xf0209,c_xf0210,c_xf0211,c_xf0212,c_xf0213,c_xf0214,c_xf0215
enum c_xf0216,c_xf0217,c_ud0218,c_ud0219,c_ud0220,c_mf0221,c_mf0222,c_mf0223
enum c_mf0224,c_mf0225,c_mf0226,c_mf0227,c_mf0228,c_mf0229,c_mf0230,c_mf0231
enum c_mf0232,c_mf0233,c_mf0234,c_mf0235,c_mf0236,c_mf0237,c_mf0238,c_mf0239
enum c_mf0240,c_mf0241,c_mf0242,c_mf0243,c_mf0244,c_mf0245,c_mf0246,c_mf0247
enum c_mf0248,c_mf0249,c_mf0250,c_mf0251,c_ud0252,c_mf0253,c_mf0254,c_mf0255
enum c_mf0256,c_ud0257,c_ud0258,c_gp0259,c_pf0260,c_ss0261,c_ud0262,c_gp0263
enum c_ss0264,c_gp0265,c_gp0266,c_gp0267,c_gp0268,c_gp0269,c_pf0270,c_ss0271
enum c_ss0272,c_ss0273,c_ud0274,c_gp0275,c_ss0276,c_ss0277,c_gp0278,c_gp0279
enum c_pf0280,c_ss0281,c_ss0282,c_gp0283,c_gp0284,c_gp0285,c_pf0286,c_gp0287
enum c_gp0288,c_ud0289,c_gp0290,c_gp0291,c_ud0292,c_ud0293,c_ss0294,c_ss0295
enum c_gp0296,c_ud0297,c_ud0298,c_ud0299,c_ud0300,c_gp0301,c_gp0302,c_gp0303
enum c_nm0304,c_ss0305,c_ss0306,c_gp0307,c_gp0308,c_gp0309,c_gp0310,c_pf0311
enum c_gp0312,c_gp0313,c_gp0314,c_ud0315,c_ud0316,c_ud0317,c_nm0318,c_ss0319
enum c_gp0320,c_gp0321,c_pf0322,c_ac0323,c_gp0324,c_gp0325,c_ud0326,c_gp0327
enum c_gp0328,c_gp0329,c_ud0330,c_gp0331,c_ud0332,c_xf0333,c_xf0334,c_xf0335
enum c_xf0336,c_ud0337,c_ud0338,c_gp0339,c_xf0340,c_ud0341,c_ac0342,c_ac0343
enum c_ud0344,c_ud0345,c_ud0346,c_ud0347,c_ud0348,c_ud0349,c_ud0350,c_ud0351
enum c_nm0352,c_ss0353,c_gp0354,c_pf0355,c_ac0356,c_ud0357,c_ud0358,c_ud0359
enum c_ud0360,c_gp0361,c_ud0362,c_ud0363,c_ss0364,c_ss0365,c_gp0366,c_pf0367
enum c_ac0368,c_ud0369,c_ud0370,c_ud0371,c_ud0372,c_gp0373,c_gp0374,c_gp0375
enum c_gp0376,c_gp0377,c_pf0378,c_ss0379,c_ud0380,c_ud0381,c_pf0382,c_pf0383
enum c_pf0384,c_ud0385,c_gp0386,c_gp0387,c_pf0388,c_pf0389,c_ud0390,c_ud0391
enum c_gp0392,c_gp0393,c_gp0394,c_gp0395,c_ud0396,c_ud0397,c_ud0398,c_ss0399
enum c_ud0400,c_ud0401,c_ud0402,c_ud0403,c_ud0404,c_ss0405,c_ss0406,c_gp0407
enum c_gp0408,c_gp0409,c_pf0410,c_ac0411
ExceptionPtr struc
Vector BYTE ?
Flags BYTE ?
NoteIndex WORD ?
ExceptionPtr ends
Exceptions struc
eCount WORD ?
VectorsList ExceptionPtr<>
Exceptions ends
PEXCEPTS TYPEDEF PTR Exceptions
E_REAL equ (1 shl 3)
E_8086 equ (1 shl 4)
E_PR86 equ (1 shl 5)
E_COMP equ (1 shl 6)
E_PR64 equ (1 shl 7)
E_PROT equ (E_PR86 or E_PR64 or E_COMP)
E_ALL equ (E_REAL or E_8086 or E_PROT)
E_VPRT equ (E_8086 or E_PROT)
E_RORV equ (E_REAL or E_8086)
E_NVRT equ (E_REAL or E_PROT)
E_NORL equ (E_PROT or E_8086)
E_PR32 equ (E_COMP or E_PR86)
E_X86C equ (E_REAL or E_8086 or E_PR32)
;Interrupts and Exceptions
ExceptProps struc
Interrupt BYTE ?
Mnemonic CHAR 4 dup(?)
Cause BYTE ?
Flags WORD ?
ExceptProps ends
curr_id=0
enum E_DIVIDE_BY_ZERO_ERROR,E_DEBUG,E_NON_MASKABLE_INT,E_BREAKPOINT,E_OVERFLOW ;0,1,2,3,4
enum E_BOUND_RANGE,E_INVALID_OPCODE,E_DEVICE_NOT_AVAILABLE,E_DOUBLE_FAULT ;5,6,7,8
enum E_COPROCESSOR_SEG_OVER,E_INVALID_TSS,E_SEGMENT_NOT_PRESENT,E_STACK ;9,10,11,12
enum E_GENERAL_PROTECTION,E_PAGE_FAULT,E_RESERVED,E_X87_EXCEPT_PENDING ;13,14,15,16
enum E_ALIGNMENT_CHECK,E_MACHINE_CHECK,E_SIMD_FLOATING_POINT ;17,18,19
curr_id=30
enum E_SECURITY_EXCEPTION ;30
curr_id=32
enum E_EXTERNAL_INTS ;32
curr_id=0
enum C_DIV_IDIV_INSTRUCTIONS,C_INSTR_OR_DATA_ACCESS,C_EXTERNAL_NMI_SIGNAL,C_INT3_INSTR ;0,1,2,3
enum C_INTO_INSTR,C_BOUND_INSTR,C_INVALID_INSTRS,C_X87_INSTRUCTIONS,C_INT_DURING_AN_INT ;4,5,6,7,8
enum C_RESERVED,C_TSS_ACCESS_AND_SWITCH,C_ACCESS_THROUGH_AN_LSD,C_SS_LOADS_AND_SS_REFS ;9,10,11,12
enum C_MEM_ACCESS_AND_PCHECK,C_PAGING_MEM_ACCESS ;13,14
curr_id=16
enum C_X87_AND_MEDIA64_INSTR,C_MEM_ACCESS,C_MODEL_SPECIFIC,C_MEDIA128_INSTR ;16,17,18,19
curr_id=30
enum C_SECURE_EVENT_IN_HOST ;30
curr_id=32
enum C_EXT_INT_SIGNAL ;32
SRC_SOFTWARE equ (1 shl 3)
SRC_INTERNAL equ (1 shl 4)
SRC_EXTERNAL equ (1 shl 5)
TYPE_FAULT equ (1 shl 6)
TYPE_TRAP equ (1 shl 7)
TYPE_ABORT equ (1 shl 8)
PRECISE equ (1 shl 9)
NOT_PRECISE equ (1 shl 10)
CLASS_CONTRIBUTORY equ (1 shl 11)
CLASS_BENIGN equ (1 shl 12)
GENS_BY_GEN_INSTRS equ (1 shl 13)
RESERVED_VECTOR equ (1 shl 14)
MediaException struc
Exception BYTE ?
Mnemonic CHAR 3 dup(?)
AltMnemonic CHAR 3 dup(?)
Flags BYTE ?
MediaException ends
IEEE754 equ (1 shl 3)
NAN_HIGH_PRIORITY equ (1 shl 4)
curr_id=0
enum XF_INVALID_OPERATION,XF_DENORMALIZED_OPERATION,XF_ZERO_DIVIDED
enum XF_OVERFLOW,XF_UNDERFLOW,XF_PRECISION
X87Exception struc
Exception BYTE ?
Mnemonic CHAR 3 dup(?)
AltMnemonic CHAR 3 dup(?)
Flags BYTE ?
X87Exception ends
curr_id=0
enum MF_INVALID_OPERATION,MF_DENORMALIZED_OPERATION,MF_ZERO_DIVIDED
enum MF_OVERFLOW,MF_UNDERFLOW,MF_PRECISION,MF_STACK_FAULT
;Instruction Latencies
;Flags
LAT_IMM equ (1 shl 0)
LAT_RNG equ (1 shl 1)
LNOTE11 equ (1 shl 2) ;4 The latency listed is the absolute minimum,
;while average latencies may be higher and are a function of internal
;pipeline conditions.
LAT_COND equ (1 shl 3)
LAT_UNV equ (1 shl 4)
LAT_FRACT equ (1 shl 5)
LNOTE1 equ (1 shl 6) ;Static timing assumes a predicted branch.
LNOTE2 equ (1 shl 7) ;Store operation also updates ESP—the new
;register value is available one clock earlier
;than the specified latency.
LNOTE3 equ (1 shl 8) ;The clock count, regardless of the number of
;shifts or rotates, as determined by CL or imm8.
LNOTE4 equ (1 shl 9) ;LEA instructions have a latency of 1 when there
;are two source operands (as in the case of the base + index
;form LEA EAX, [EDX+EDI]). Forms with a scale or more
;than two source operands will have a latency of 2 (LEA
;EAX, [EBX+EBX*8]).
LNOTE5 equ (1 shl 10) ;These instructions have an effective latency as shown.
;They map to internal NOPs that can be issued at a rate of
;three per cycle but do not occupy execution resources.
LNOTE6 equ (1 shl 11) ;The latency of repeated string instructions can be found
;in “Latency of Repeated String Instructions” on page 167.
LNOTE7 equ (1 shl 12) ;For the PREFETCH and PREFETCHW instructions, the mem8
;value refers to an address in the 64-byte line to be prefetched.
LNOTE8 equ (1 shl 13) ;These instructions have an effective latency as shown. However,
;these instructions generate an internal NOP
;with a latency of two cycles but no related
;dependencies. These internal NOPs can be executed at a rate of
;three per cycle and can use any of the three execution resources.
OPS16 equ (1 shl 14)
OPS32 equ (1 shl 15)
OPS64 equ (1 shl 16)
LNOTE10 equ (1 shl 17) ;The 8-clock latency is only visible to younger stores that need
;to do an external write. The 2-clock latency is
;visible to the other stores and instructions.
LNOTE12 equ (1 shl 18) ;For the PREFETCHNTA/T0/T1/T2 instructions, the mem8 value
;refers to an address in the 64-byte line to be prefetched.
TWO_0F equ (1 shl 19)
RA2C equ (1 shl 20) ;Repeat after 2 cyles.
RA4C equ (1 shl 21) ;Repeat after 4 cyles.
BF_EX1_PIPE equ (1 shl 22) ;If branch fused, op to EX1, else op to EX0 | EX1.
LNOTE15 equ (1 shl 23) ;This is the execution latency for the instruction.
;The time to complete the external write depends on the memory
;speed and the hardware implementation.
LNOTE14 equ (1 shl 24) ;The low half of the result is available one cycle earlier than listed.
MODE64 equ (1 shl 25)
ADDR16 equ (1 shl 26)
ADDR32 equ (1 shl 27)
LNOTE13 equ (1 shl 28) ;The high half of the result is available one cycle earlier than listed.
LNOTE9 equ (1 shl 29) ;First op to AG0 | AG1, Second to EX0 | EX1.
NORES equ (LNOTE5) ;No resources mapped.
LNOTE16 equ (1 shl 30) ;The three latency numbers represent the latency values
;for precision control settings of single precision, double
;precision, and extended precision, respectively.
J32NOF equ (1 shl 31)
;ModrmType
MODREGREG equ (1 shl 0)
MODREGMEM equ (1 shl 1)
LNOTE17 equ (1 shl 2) ;2. These instructions have an effective latency as shown.
;However, these instructions generate an internal NOP
;with a latency of two cycles but no related dependencies.
;These internal NOPs can be executed at a rate of
;three per cycle and can use any of the three execution resources.
LNOTE18 equ (1 shl 3) ;3. This is a VectorPath decoded operation that uses one execution pipe (one ROP).
LNOTE19 equ (1 shl 4) ;4. There is additional latency associated with this instruction.
;“e” represents the difference between the exponents
;of the divisor and the dividend. If “s” is the number
;of normalization shifts performed on the result, then
;n = (s+1)/2 where (0 <= n <= 32).
LNOTE20 equ (1 shl 5) ;5. The latency provided for this operation is the best-case latency.
MBL equ (1 shl 6)
VEX_SEC66 equ (1 shl 7)
;Pipes
EX0_PIPE equ (1 shl 0)
EX1_PIPE equ (1 shl 1)
AG0_PIPE equ (1 shl 2)
AG1_PIPE equ (1 shl 3)
P0_PIPE equ (1 shl 4)
P1_PIPE equ (1 shl 5)
P2_PIPE equ (1 shl 6)
P3_PIPE equ (1 shl 7)
UNV_PIPE equ (1 shl 8)
MAL_PIPE equ (1 shl 9)
XBR_PIPE equ (1 shl 10)
FMA_PIPE equ (1 shl 11)
MC_PIPE equ (1 shl 12)
CVT_PIPE equ (1 shl 13)
MMA_PIPE equ (1 shl 14)
STO_PIPE equ (1 shl 15)
FADD_PIPE equ (1 shl 16)
FMUL_PIPE equ (1 shl 17)
FSTORE_PIPE equ (1 shl 18)
NONE_PIPE equ (1 shl 19)
EX0_EX1 equ (EX0_PIPE or EX1_PIPE)
AG0_AG1 equ (AG0_PIPE or AG1_PIPE)
EX_AG01 equ (EX0_EX1 or AG0_AG1)
FADD_FMUL equ (FADD_PIPE or FMUL_PIPE)
FADD_MUL_ST equ (FADD_FMUL or FSTORE_PIPE)
XBR_P1 equ (XBR_PIPE or P1_PIPE)
MAL_P2_P3 equ (MAL_PIPE or P2_PIPE or P3_PIPE)
CVT_P0 equ (CVT_PIPE or P0_PIPE)
STO_P3 equ (STO_PIPE or P3_PIPE)
FMA_P0_P1 equ (FMA_PIPE or P0_PIPE or P1_PIPE)
MMA_P0 equ (MMA_PIPE or P0_PIPE)
FMA_P0 equ (FMA_PIPE or P0_PIPE)
XBR_P1_FMA_P0 equ (XBR_P1 or FMA_P0)
FMA_P0_P1_STO_P3 equ (FMA_P0_P1 or STO_P3)
XBR_P1_CVT_P0 equ (XBR_P1 or CVT_P0)
CVT_P0_STO_P3 equ (CVT_P0 or STO_P3)
XBR_P1_STO_P3 equ (XBR_P1 or STO_P3)
MAL_P2_P3_XBR_P1 equ (MAL_P2_P3 or XBR_P1)
CVT_P0_FMA_P0_P1 equ (FMA_P0_P1 or CVT_P0)
;DecodeType
DEC_1P equ (1 shl 0)
DEC_2P equ (1 shl 1)
DEC_VC equ (1 shl 2)
DEC_MC equ (1 shl 3)
ltn struc
FirstPfx BYTE ?
FirstByte BYTE ?
SecondByte BYTE ?
ModrmType BYTE ?
Pipes DWORD ?
DecodeType WORD ?
Latency QWORD ?
Latency2 QWORD ?
Throughput WORD ?
Flags DWORD ?
ltn ends
PLTN TYPEDEF PTR ltn
LAT_ATHLON equ (1 shl 0)
LAT_BULLDOZER equ (1 shl 1)
PCNTX TYPEDEF PTR cntx
ReadContext TYPEDEF PROTO Cntx:PVOID,lpDest:PVOID,__size:ULONG64,Selector:WORD,MemOffset:QWORD,dwFlags:DWORD
PREAD_CONTEXT TYPEDEF PTR ReadContext
cntx struc
ReadMemCallback PREAD_CONTEXT ?
Context PCONTEXT ?
lpVoid PVOID ?
cntx ends
curr_id=1
enum ch_cpl,callgate
LPEF TYPEDEF PTR EF
LPExceptProps TYPEDEF PTR ExceptProps
LPMediaException TYPEDEF PTR MediaException
LPX87Exception TYPEDEF PTR X87Exception
lpx87c TYPEDEF PTR lpx87c
;register encoding
;The registers available in all modes.
;32-bit GPRs
GPR_EAX equ 0
GPR_EBX equ 3
GPR_ECX equ 1
GPR_EDX equ 2
GPR_ESI equ 6
GPR_EDI equ 7
GPR_EBP equ 5
GPR_ESP equ 4
;16-bit GPRs
GPR_AX equ 0
GPR_BX equ 3
GPR_CX equ 1
GPR_DX equ 2
GPR_SI equ 6
GPR_DI equ 7
GPR_BP equ 5
GPR_SP equ 4
;8-bit GPRs
GPR_AL equ 0
GPR_BL equ 3
GPR_CL equ 1
GPR_DL equ 2
;Not addressable when a REX prefix is used.
GPR_AH equ 4
GPR_BH equ 7
GPR_CH equ 5
GPR_DH equ 6
;The registers accessible in 64-bit mode.
;64-bit GPRs
GPR_RAX equ 0
GPR_RBX equ 3
GPR_RCX equ 1
GPR_RDX equ 2
GPR_RSI equ 6
GPR_RDI equ 7
GPR_RBP equ 5
GPR_RSP equ 4
GPR_R8 equ 8
GPR_R9 equ 9
GPR_R10 equ 10
GPR_R11 equ 11
GPR_R12 equ 12
GPR_R13 equ 13
GPR_R14 equ 14
GPR_R15 equ 15
;32-bit GPRs
GPR_R8d equ 8
GPR_R9d equ 9
GPR_R10d equ 10
GPR_R11d equ 11
GPR_R12d equ 12
GPR_R13d equ 13
GPR_R14d equ 14
GPR_R15d equ 15
;16-bit GPRs
GPR_R8w equ 8
GPR_R9w equ 9
GPR_R10w equ 10
GPR_R11w equ 11
GPR_R12w equ 12
GPR_R13w equ 13
GPR_R14w equ 14
GPR_R15w equ 15
;8-bit GPRs
GPR_R8b equ 8
GPR_R9b equ 9
GPR_R10b equ 10
GPR_R11b equ 11
GPR_R12b equ 12
GPR_R13b equ 13
GPR_R14b equ 14
GPR_R15b equ 15
;Only addressable when a REX prefix is used.
GPR_SIL equ 6
GPR_DIL equ 7
GPR_BPL equ 5
GPR_SPL equ 4
ID_ES equ 0
ID_CS equ 1
ID_SS equ 2
ID_DS equ 3
ID_FS equ 4
ID_GS equ 5
MIN_ASM_PASSES equ 2
STD_MAX_PASSES equ 30
ipr struc
hBase HANDLE ? ;00h
hInstr HINSTR ? ;08h
incp PINCPATH ? ;10h
root_ind ULONG64 ? ;18h
src_ind ULONG64 ? ;20h
err_ind ULONG64 ? ;28h
pm_ind ULONG64 ? ;30h
msi ULONG64 ? ;38h
hKern HMODULE ? ;40h
hNt HMODULE ? ;48h
hDsmh HMODULE ? ;50h
hDsmb HMODULE ? ;58h
GetMH PVOID ? ;60h
GetPA PVOID ? ;68h
HeapAlloc PVOID ? ;70h
HeapReAlloc PVOID ? ;78h
hHeap HANDLE ? ;80h
CreateFile PVOID ? ;88h
ReadFile PVOID ? ;90h
WriteFile PVOID ? ;98h
CloseHandle PVOID ? ;0A0h
ProcessEquations ULONG64 ? ;0A8h
GetComma PVOID ? ;0B0h
IntToStr PVOID ? ;0B8h
HeapFree PVOID ? ;0C0h
IsQwordReg PVOID ? ;0C8h
IsDwordReg PVOID ? ;0D0h
IsWordReg PVOID ? ;0D8h
IsByteReg PVOID ? ;0E0h
EvalExpr128 PVOID ? ;0E8h
EvalExpr256 PVOID ? ;0F0h
SetDefaultOperType PVOID ? ;0F8h
SkipComment PVOID ? ;100h
TrimComment PVOID ? ;108h
LoadLib PVOID ? ;110h
ProcessTextEqs PVOID ? ;118h
DsmCtrl DWORD ? ;120h
Mode BYTE ? ;124h
Filler BYTE ? ;125h
wFlags WORD ? ;126h
AlterBase QWORD ? ;128h
fs_ind ULONG64 ? ;130h
GetSharedFunc PVOID ? ;138h
GetTextEqValue PVOID ? ;140h
SelValidLN PVOID ? ;148h
ipr ends
PINCPARSE TYPEDEF PTR ipr
curr_id=0
enf P_MACRO,F_SHARED
curr_id=0
enf NOT_ALLOWED,INDEFINITE_MEANING
enf STD_LOCK, TPR_ACCESS, STD_REPNE, STD_REP, STD_REPE, OPC_MOD, OPC_MOD66, REP_NOP
enf STD_XACQUIRE, STD_XRELEASE, STD_OPSIZE, STD_ASIZE, STD_CX_W, STD_SEG, DS_ANNIH
enf STD_LOCK_F, TPR_ACCESS_F, STD_REPNE_F, STD_REP_F,STD_REPE_F, OPC_MOD_F,OPC_MOD66_F,REP_NOP_F
enf STD_XACQUIRE_F, STD_XRELEASE_F,STD_OPSIZE_F,STD_ASIZE_F,STD_CX_W_F, STD_SEG_F, SS_ANNIH
STD_CX_WA_F equ (STD_ASIZE_F or STD_CX_W_F)
STD_CX_WA equ (STD_ASIZE or STD_CX_W)
M_F0_F equ (STD_LOCK_F or TPR_ACCESS_F)
M_F2F3_F equ (STD_REPNE_F or STD_REP_F or STD_REPE_F or OPC_MOD_F or REP_NOP_F or STD_XACQUIRE_F or STD_XRELEASE_F)
M_66_F equ (STD_OPSIZE_F or OPC_MOD66_F)
M_67_F equ (STD_ASIZE_F or STD_CX_W_F)
M_SEG_F equ STD_SEG_F