mirror of
https://github.com/stasenso/SHA256.git
synced 2026-06-27 05:42:43 +03:00
1181 lines
53 KiB
PHP
1181 lines
53 KiB
PHP
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 |