This module maintains dictionaries of fixed names (tokens) which make the EuroAssembler language. Tokens are defined statically in [.data] segment and organized in tables as DICT structured entries. The end of each table is marked with an empty entry (DICT.Size=0).
EUROASM NOWARN=2101,NOWARN=3720 dict PROGRAM FORMAT=COFF,MODEL=FLAT,WIDTH=32 INCLUDEHEAD "euroasm.htm" ; Interface (structures, symbols and macros) of other modules. INCLUDEHEAD \ ; Include headers of another modules used in this module. ea.htm, \ eaopt.htm, \ exp.htm, \ ii.htm, \ iia.htm, \ iib.htm, \ iic.htm, \ iid.htm, \ iif.htm, \ iig.htm, \ iik.htm, \ iim.htm, \ iip.htm, \ iis.htm, \ iit.htm, \ iiv.htm, \ iix.htm, \ iiy.htm, \ iiz.htm, \ msg.htm, \ pf.htm, \ pgm.htm, \ pgmopt.htm, \ sss.htm, \ sym.htm, \ syswin.htm, \ var.htm, \ ;;
dict HEAD ; Modul interface.
DICT STRUC .Ptr D DWORD ; Pointer to the text value of token. .Size D DWORD ; Size of token. .Data D DWORD ; Miscelaneous properties of the token (data payload). ENDSTRUC DICT
; Attributes list ordinal number 0..7 dictAttrNONE = 0 dictAttrSIZE = 1 dictAttrTYPE = 2 dictAttrREGTYPE = 3 dictAttrSCOPE = 4 dictAttrOFFSET = 5 dictAttrSECTION = 6 dictAttrSEGMENT = 7 dictAttrGROUP = 8 dictAttrPARA = 9 dictBinary = 00000000h ; Binary operation. dictUnary = 00000100h ; Unary operation. dictStrCmp = 00000800h ; String compare operation. dictKeyLIB = 1 dictKeyFWD = 2
End, Register, Prefix, Pseudo, Display, Intel,..
"EAX"
,
"%%IF"
etc.
"!=="
and it is used in families which need its members identified with a label. %DataName will be a part of the label.
Dict %MACRO Family, Token, Data=0, DataName=
[.data]
End %IF "%Family"==="End" ; End-of-dictionary table marker.
DD 0,0,"End"
%EXITMACRO Dict
%ENDIF End
Intel %IF "%Family[1..5]" === "Intel" ; Data is Ii*Handler, e.g. IigMOV:: or IifFILD
[.text]
Dict%Family%Token DB "%Token"
[.data]
%Group %SET %Family[6] ; Instruction category 'g','f','m','p','v' etc
DD Dict%Family%Token, SIZE#Dict%Family%Token, Ii%Group%Token::
%EXITMACRO Dict
%ENDIF Intel
Pseudo %IF "%Family" === "Pseudo" ; Data is pseudoinstruction handler, e.g. PseudoENDSTRUC:: or PseudopcIF::.
%Name %SET %Token[2..%& - 1] ; Get rid of quotes.
%IF "%Name[1]" === "%%"
%Name %SET pc%Name[2..] ; Replace leading percent sign with 'pc'.
%ENDIF
%IF "%Name" === "="
%dictName %SET eq
%ELSE
%dictName %SET %Name
%ENDIF
%IF "%DataName" !=== ""
%stmName %SET %DataName
%ELSE
%stmName %SET %Name
%ENDIF
[.text] ; [const]
Dict%Family%dictName DB %Token
[.data] ; [dict]
Dict_%Family%dictName:: DD Dict%Family%dictName, SIZE#Dict%Family%dictName, Pseudo%stmName::
%EXITMACRO Dict
%ENDIF Pseudo
Drectve %IF "%Family" === "Drectve" ; Data is PfDrectveDestroy handler, e.g. PfDrectveDestroy.EXPORT::
.
%dictName %SET %Token[2..%& - 1] ; Get rid of quotes.
[.text] ; [const]
Dict%Family%dictName DB %Token
[.data] ; [dict]
Dict_%Family%dictName:: DD Dict%Family%dictName, SIZE#Dict%Family%dictName, PfDrectveDestroy.%dictName::
%EXITMACRO Dict
%ENDIF Drectve
Display %IF "%Family" === "Display" ; .Data is local name in PseudopcDISPLAY handler, e.g. PseudopcDISPLAY.SYMBOLS
%Name %SET %Token[2..%& - 1] ; Get rid of quotes.
[.text] ; [const]
Dict%Family%Name DB %Token
[.data] ; [dict]
Dict_%Family%Name:: DD Dict%Family%Name, SIZE#Dict%Family%Name, PseudopcDISPLAY.%Name::
%EXITMACRO Dict
%ENDIF Display
Operator %IF "%Family"=="Operator"
%OperOrd %SETA 0
%REPEAT
%OperOrd %SETA %OperOrd + 1
%UNTIL "%ExpOperationList{%OperOrd}" == "%DataName" || %OperOrd > %ExpOperationListLength+0
%IF %OperOrd > %ExpOperationListLength+0
%ERROR Id=5821,"Error in ExpOperationList in macro DICT. OperOrd=%OperOrd, ListLength=%ExpOperationListLength"
%ENDIF
[.text] ; [const]
Dict%Family%DataName DB %Token
[.data] ; [dict]
%IF "%DataName"==="Scaling"
DictOperationScaling:: ; Label used in ExpEval.Multiplication
%ENDIF
%IF "%DataName"==="Addition"
DictOperationAddition:: ; Label used in ExpEval.EndPhaseOne
%ENDIF
DD Dict%Family%DataName, SIZE#Dict%Family%DataName, %Data + %OperOrd << 16 ; >>
%EXITMACRO Dict
%ENDIF Operator
Option %IF "%Family" === "Option" ; Data is ordinal number in option list.
[.text] ; [const]
Dict%Family%Token:: DB "%Token"
[.data] ; [dict]
DD Dict%Family%Token, SIZE#Dict%Family%Token, %Data
%EXITMACRO Dict
%ENDIF Option
; Other families (default).
%Name1 %SET %Token[2..%& - 1] ; Get rid of quotes.
%Name %SETA
%i %SETA 1
%WHILE "%Name1[%i]" != ""
%IF "%Name1[%i]" != "-"
%Name %SET %Name[]%Name1[%i] ; Get rid of '-' used in token.
%ENDIF
%i %SETA %i+1
%ENDWHILE
[.text] ; [const]
Dict%Family%Name DB %Token
[.data] ; [dict]
Dict_%Family%Name:: DD Dict%Family%Name, SIZE#Dict%Family%Name, %Data
%ENDMACRO Dict
ENDHEAD dict ; End of modul interface.
DictAttributes:: Dict Attribute, "SIZE", Data=ExpEval.Size:: Dict Attribute, "TYPE", Data=ExpEval.Type:: Dict Attribute, "REGTYPE", Data=ExpEval.RegType:: Dict Attribute, "SCOPE", Data=ExpEval.Scope:: Dict Attribute, "OFFSET", Data=ExpEval.Offset:: Dict Attribute, "SECTION", Data=ExpEval.Section:: Dict Attribute, "SEGMENT", Data=ExpEval.Segment:: Dict Attribute, "GROUP", Data=ExpEval.Group:: Dict Attribute, "PARA", Data=ExpEval.Para:: Dict Attribute, "FILETIME",Data=ExpEval.FileTime:: Dict Attribute, "FILESIZE",Data=ExpEval.FileSize:: Dict End
DictBoolean:: Dict Boolean, "YES", Data=-1 Dict Boolean, "NO", Data=0 Dict Boolean, "ON", Data=-1 Dict Boolean, "OFF", Data=0 Dict Boolean, "TRUE", Data=-1 Dict Boolean, "FALSE", Data=0 Dict Boolean, "ENABLE", Data=-1 Dict Boolean, "DISABLE", Data=0 Dict Boolean, "ENABLED", Data=-1 Dict Boolean, "DISABLED",Data=0 Dict End
EUROASM CODEPAGE=
.
DictCodePages:: Dict CodePage,"ANSI" ,Data= 0 ; Default system ANSI codepage. Dict CodePage,"OEM" ,Data= 1 ; Default system OEM codepage. Dict CodePage,"MAC" ,Data= 2 ; Default Macintosh codepage. Dict CodePage,"IBM437" ,Data= 437 ; OEM US. Dict CodePage,"CP437" ,Data= 437 ; OEM US. Dict CodePage,"IBM737" ,Data= 737 ; OEM Greek. Dict CodePage,"CP737" ,Data= 737 ; OEM Greek. Dict CodePage,"IBM775" ,Data= 775 ; OEM Baltic. Dict CodePage,"CP500" ,Data= 775 ; OEM Baltic. Dict CodePage,"IBM850" ,Data= 850 ; OEM WesternEuropean. Dict CodePage,"CP850" ,Data= 850 ; OEM WesternEuropean. Dict CodePage,"IBM852" ,Data= 852 ; OEM Latin 2; Central European. Dict CodePage,"CP852" ,Data= 852 ; OEM Latin 2; Central European. Dict CodePage,"IBM857" ,Data= 857 ; OEM Turkish. Dict CodePage,"CP857" ,Data= 857 ; OEM Turkish. Dict CodePage,"IBM00858" ,Data= 858 ; OEM Latin 1 + Euro symbol. Dict CodePage,"IBM860" ,Data= 860 ; OEM Portugese. Dict CodePage,"IBM861" ,Data= 861 ; OEM Icelandic. Dict CodePage,"IBM862" ,Data= 862 ; OEM Hebrew. Dict CodePage,"IBM865" ,Data= 865 ; OEM Nordic. Dict CodePage,"IBM866" ,Data= 866 ; OEM Cyrillic. Dict CodePage,"IBM869" ,Data= 869 ; OEM Greek Modern. Dict CodePage,"IBM870" ,Data= 870 ; OEM Turkish. Dict CodePage,"CP870" ,Data= 870 ; OEM Turkish. Dict CodePage,"UNICODE" ,Data= 1200 ; Unicode UTF-16LE used as WIDE in MS Windows. Dict CodePage,"UTF-16LE" ,Data= 1200 ; Unicode UTF-16 Little Endian. Dict CodePage,"UTF-16BE" ,Data= 1201 ; Unicode UTF-16 Big Endian. Dict CodePage,"WINDOWS-1250" ,Data= 1250 ; ANSI Latin 2; Central European. Dict CodePage,"WINDOWS-1251" ,Data= 1251 ; ANSI Cyrillic. Dict CodePage,"WINDOWS-1252" ,Data= 1252 ; ANSI Latin 1; Western European. Dict CodePage,"WINDOWS-1253" ,Data= 1253 ; ANSI Greek. Dict CodePage,"WINDOWS-1254" ,Data= 1254 ; ANSI Turkish. Dict CodePage,"WINDOWS-1255" ,Data= 1255 ; ANSI Hebrew. Dict CodePage,"WINDOWS-1256" ,Data= 1256 ; ANSI Arabic. Dict CodePage,"WINDOWS-1257" ,Data= 1257 ; ANSI Baltic. Dict CodePage,"WINDOWS-1258" ,Data= 1258 ; ANSI Vietnamese. Dict CodePage,"MACINTOSH" ,Data=10000 ; MAC Western European. Dict CodePage,"X-MAC-CE" ,Data=10029 ; MAC Central European. Dict CodePage,"X-IA5" ,Data=20105 ; IA5 Western European. Dict CodePage,"US-ASCII" ,Data=20127 ; ASCII US. Dict CodePage,"KOI8-R" ,Data=20866 ; Cyrillic Russian. Dict CodePage,"KOI8-U" ,Data=21866 ; Cyrillic Ukrainian. Dict CodePage,"ISO-8859-1" ,Data=28591 ; ISO Latin 1; Western European. Dict CodePage,"ISO-8859-2" ,Data=28592 ; ISO Latin 2; Central European. Dict CodePage,"ISO-8859-3" ,Data=28593 ; ISO Latin 3. Dict CodePage,"ISO-8859-4" ,Data=28594 ; ISO Latin 4; Baltic. Dict CodePage,"ISO-8859-5" ,Data=28595 ; ISO Cyrillic. Dict CodePage,"ISO-8859-6" ,Data=28596 ; ISO Arabic. Dict CodePage,"ISO-8859-7" ,Data=28597 ; ISO Greek. Dict CodePage,"ISO-8859-8" ,Data=28598 ; ISO Hebrew Visual. Dict CodePage,"ISO-8859-8-I" ,Data=38598 ; ISO Hebrew Logical. Dict CodePage,"ISO-8859-9" ,Data=28599 ; ISO Turkish. Dict CodePage,"ISO-8859-13" ,Data=28603 ; ISO Estonian. Dict CodePage,"ISO-8859-15" ,Data=28605 ; ISO Latin 9. Dict CodePage,"UTF-7" ,Data=65000 ; Unicode UTF-7. Dict CodePage,"UTF-8" ,Data=65001 ; Unicode UTF-8. Dict End
DictCondCodes:: Dict CondCode,"A", Data="NA" +0111b<<24 ; >> Dict CondCode,"AE", Data="NAE"+0011b<<24 ; >> Dict CondCode,"B", Data="NB" +0010b<<24 ; >> Dict CondCode,"BE", Data="NBE"+0110b<<24 ; >> Dict CondCode,"C", Data="NC" +0010b<<24 ; >> Dict CondCode,"E", Data="NE" +0100b<<24 ; >> Dict CondCode,"G", Data="NG" +1111b<<24 ; >> Dict CondCode,"GE", Data="NGE"+1101b<<24 ; >> Dict CondCode,"L", Data="NL" +1100b<<24 ; >> Dict CondCode,"LE", Data="NLE"+1110b<<24 ; >> Dict CondCode,"NA", Data="A" +0110b<<24 ; >> Dict CondCode,"NAE",Data="AE" +0010b<<24 ; >> Dict CondCode,"NB", Data="B" +0011b<<24 ; >> Dict CondCode,"NBE",Data="BE" +0111b<<24 ; >> Dict CondCode,"NC", Data="C" +0011b<<24 ; >> Dict CondCode,"NE", Data="E" +0101b<<24 ; >> Dict CondCode,"NG", Data="G" +1110b<<24 ; >> Dict CondCode,"NGE",Data="GE" +1100b<<24 ; >> Dict CondCode,"NLE",Data="LE" +1111b<<24 ; >> Dict CondCode,"NL", Data="L" +1101b<<24 ; >> Dict CondCode,"NO", Data="O" +0001b<<24 ; >> Dict CondCode,"NP", Data="P" +1011b<<24 ; >> Dict CondCode,"NS", Data="S" +1001b<<24 ; >> Dict CondCode,"NZ", Data="Z" +0101b<<24 ; >> Dict CondCode,"O", Data="NO" +0000b<<24 ; >> Dict CondCode,"P", Data="NP" +1010b<<24 ; >> Dict CondCode,"PE", Data="PO" +1010b<<24 ; >> Dict CondCode,"PO", Data="PE" +1011b<<24 ; >> Dict CondCode,"S", Data="NS" +1000b<<24 ; >> Dict CondCode,"Z", Data="NZ" +0100b<<24 ; >> Dict End
DictDatatypes:: Dict Datatype, "BYTE", Data='B' Dict Datatype, "UNICHAR",Data='U' Dict Datatype, "WORD", Data='W' Dict Datatype, "DWORD", Data='D' Dict Datatype, "QWORD", Data='Q' Dict Datatype, "TBYTE", Data='T' Dict Datatype, "OWORD", Data='O' Dict Datatype, "YWORD", Data='Y' Dict Datatype, "ZWORD", Data='Z' Dict Datatype, "INSTR", Data='I' DictDatatypesShort:: Dict Datatype, "B", Data='B' Dict Datatype, "U", Data='U' Dict Datatype, "W", Data='W' Dict Datatype, "D", Data='D' Dict Datatype, "Q", Data='Q' Dict Datatype, "T", Data='T' Dict Datatype, "O", Data='O' Dict Datatype, "Y", Data='Y' Dict Datatype, "Z", Data='Z' Dict Datatype, "I", Data='I' Dict End
DictDrectve:: Dict Drectve, "IMPORT" Dict Drectve, "EXPORT" Dict Drectve, "ENTRY" Dict End
DictDisplayObj:: Dict Display,"AUTOMATICVARIABLES" Dict Display,"FORMALVARIABLES" Dict Display,"USERVARIABLES" Dict Display,"SYSTEMVARIABLES" Dict Display,"VARIABLES" Dict Display,"MACROS" Dict Display,"RELOCATIONS" Dict Display,"FIXEDSYMBOLS" Dict Display,"UNFIXEDSYMBOLS" Dict Display,"REFERENCEDSYMBOLS" Dict Display,"UNREFERENCEDSYMBOLS" Dict Display,"SYMBOLS" Dict Display,"LITERALSYMBOLS" Dict Display,"GROUPS" Dict Display,"STRUCTURES" Dict Display,"SEGMENTS" Dict Display,"SECTIONS" Dict Display,"CONTEXT" Dict Display,"CHUNKS" Dict Display,"FILES" Dict Display,"ALL" Dict End
EUROASM CPU=
generation options.
Data is flag(s) under iiCPU_CpuMask which will be set to
EAOPT.Machine.DictEaoptCpu:: Dict Cpu,"X64", Data=iiCPU_186|iiCPU_286|iiCPU_386|iiCPU_486|iiCPU_586|iiCPU_686|iiCPU_X64 Dict Cpu,"P6", Data=iiCPU_186|iiCPU_286|iiCPU_386|iiCPU_486|iiCPU_586|iiCPU_686 Dict Cpu,"686", Data=iiCPU_186|iiCPU_286|iiCPU_386|iiCPU_486|iiCPU_586|iiCPU_686 Dict Cpu,"PENTIUM",Data=iiCPU_186|iiCPU_286|iiCPU_386|iiCPU_486|iiCPU_586 Dict Cpu,"586", Data=iiCPU_186|iiCPU_286|iiCPU_386|iiCPU_486|iiCPU_586 Dict Cpu,"486", Data=iiCPU_186|iiCPU_286|iiCPU_386|iiCPU_486 Dict Cpu,"386", Data=iiCPU_186|iiCPU_286|iiCPU_386 Dict Cpu,"286", Data=iiCPU_186|iiCPU_286 Dict Cpu,"186", Data=iiCPU_186 Dict Cpu,"086", Data=iiCPU_086 Dict Cpu,"8086", Data=iiCPU_086 Dict End
EUROASM SIMD=
generation options.
DictEaoptSimd:: Dict Simd,"AVX512",Data=iiCPU_SSE1|iiCPU_SSE2|iiCPU_SSE3|iiCPU_SSSE3|iiCPU_SSE4|iiCPU_SSE4.1|iiCPU_SSE4.2|iiCPU_AVX|iiCPU_AVX2|iiCPU_AVX512 Dict Simd,"AVX2" ,Data=iiCPU_SSE1|iiCPU_SSE2|iiCPU_SSE3|iiCPU_SSSE3|iiCPU_SSE4|iiCPU_SSE4.1|iiCPU_SSE4.2|iiCPU_AVX|iiCPU_AVX2 Dict Simd,"AVX" ,Data=iiCPU_SSE1|iiCPU_SSE2|iiCPU_SSE3|iiCPU_SSSE3|iiCPU_SSE4|iiCPU_SSE4.1|iiCPU_SSE4.2|iiCPU_AVX Dict Simd,"SSE4.2",Data=iiCPU_SSE1|iiCPU_SSE2|iiCPU_SSE3|iiCPU_SSSE3|iiCPU_SSE4|iiCPU_SSE4.1|iiCPU_SSE4.2 Dict Simd,"SSE4.1",Data=iiCPU_SSE1|iiCPU_SSE2|iiCPU_SSE3|iiCPU_SSSE3|iiCPU_SSE4|iiCPU_SSE4.1 Dict Simd,"SSE4" ,Data=iiCPU_SSE1|iiCPU_SSE2|iiCPU_SSE3|iiCPU_SSSE3|iiCPU_SSE4 Dict Simd,"SSSE3" ,Data=iiCPU_SSE1|iiCPU_SSE2|iiCPU_SSE3|iiCPU_SSSE3 Dict Simd,"SSE3" ,Data=iiCPU_SSE1|iiCPU_SSE2|iiCPU_SSE3 Dict Simd,"SSE2" ,Data=iiCPU_SSE1|iiCPU_SSE2 Dict Simd,"SSE1" ,Data=iiCPU_SSE1 Dict Simd,"SSE" ,Data=iiCPU_SSE1 Dict End
EUROASM feature=
boolean options.
TSX,AES,LWP,XOP,MVEX,FPU,MMX,PRIV...
.DictEaoptFea:: %ordinal %SETA 0 fea %FOR %EaoptFeaList %ordinal %SETA %ordinal + 1 Dict Eaopt,"%fea",Data=%ordinal<<16 + varTypeSysEaopt + varTypeSysEaoptF ; >> %ENDFOR fea Dict End
EUROASM
miscellanous non-boolean options.
CPU,SIMD,WARN,NOWARN,CODEPAGE,DUMPWIDTH,MAXINCLUSIONS,INCLUDEPATH,LISTFILE
.DictEaoptMisc:: %ordinal %SETA 0 opt %FOR %EaoptMiscList %ordinal %SETA %ordinal + 1 Dict Eaopt,"%opt",Data=%ordinal<<16 + varTypeSysEaopt + varTypeSysEaoptM ; >> %ENDFOR opt Dict End
EUROASM
boolean options.
AUTOALIGN,AUTOSEGMENT,DUMP,DUMPALL,LIST...
.DictEaoptStatus:: %ordinal %SETA 0 status %FOR %EaoptStatusList %ordinal %SETA %ordinal + 1 Dict Eaopt,"%status",Data=%ordinal<<16 + varTypeSysEaopt + varTypeSysEaoptS ; >> %ENDFOR status Dict End
DATE, EUROASMOS, PROC, SOURCELINE, PROGRAM...
.DictEasmSysVar:: ; Dictionary of €ASM system %^variables. %ordinal %SETA 0 opt %FOR %EaoptEasmList %ordinal %SETA %ordinal + 1 Dict Easmopt, "%opt", Data=%ordinal<<16 + varTypeSysEasm ;>> %ENDFOR opt Dict End
DictEuroasmOrd:: Dict PseudoOrd, "PUSH", Data=PseudoEUROASM.PUSH:: Dict PseudoOrd, "POP", Data=PseudoEUROASM.POP:: Dict End
DictForKeys:: Dict Key,"STEP" Dict End
DictFpConstants:: Dict FpConstant, "ZERO",Data=00000000h Dict FpConstant, "PINF",Data=7FFF0000h Dict FpConstant, "INF", Data=7FFF8000h Dict FpConstant, "PNAN",Data=7FFF8001h Dict FpConstant, "SNAN",Data=7FFF8001h Dict FpConstant, "NAN", Data=7FFFC000h Dict FpConstant, "QNAN",Data=7FFFC000h Dict End
euroasm.ini.
DictIniSect:: Dict IniSect,"EUROASM", Data=eaIniSectEUROASM Dict IniSect,"PROGRAM", Data=eaIniSectPROGRAM Dict End
DictDynLinkKeys:: Dict Key,"LIB", Data=dictKeyLIB Dict Key,"FWD", Data=dictKeyFWD Dict End
DictAlignValue:: Dict Alignment, "I", Data=1 Dict Alignment, "B", Data=1 Dict Alignment, "U", Data=2 Dict Alignment, "W", Data=2 Dict Alignment, "D", Data=4 Dict Alignment, "Q", Data=8 Dict Alignment, "T", Data=8 Dict Alignment, "O", Data=16 Dict Alignment, "Y", Data=32 Dict Alignment, "Z", Data=64 Dict Alignment, "BYTE", Data=1 Dict Alignment, "UNICHAR", Data=2 Dict Alignment, "WORD", Data=2 Dict Alignment, "DWORD", Data=4 Dict Alignment, "QWORD", Data=8 Dict Alignment, "TBYTE", Data=8 Dict Alignment, "OWORD", Data=16 Dict Alignment, "YWORD", Data=32 Dict Alignment, "ZWORD", Data=64 Dict End
DictIiMfs:: ; Special instruction modifier names. Dict Modifier, "ALIGN", Data=iiMfsALIGN_Mask Dict Modifier, "NESTINGCHECK", Data=iiMfgNESTING_OFF Dict End DictIiMfg:: ; General instruction modifier names. Dict Modifier, "CODE", Data=iiMfgCODE_Mask Dict Modifier, "DATA", Data=iiMfgDATA_Mask Dict Modifier, "DISP", Data=iiMfgDISP_Mask Dict Modifier, "IMM", Data=iiMfgIMM_Mask Dict Modifier, "DIST", Data=iiMfgDIST_Mask Dict Modifier, "ADDR", Data=iiMfgADDR_Mask Dict Modifier, "SCALE",Data=iiMfgSCALE_Mask Dict End ; General instruction modifier enumerated values. DictIiMfCode:: Dict IiMfCode, "S", Data=iiMfgCODE_SHORT Dict IiMfCode, "SHORT",Data=iiMfgCODE_SHORT Dict IiMfCode, "L", Data=iiMfgCODE_LONG Dict IiMfCode, "LONG", Data=iiMfgCODE_LONG Dict End DictIiMfData:: Dict IiMfData, "B", Data=iiMfgDATA_BYTE Dict IiMfData, "BYTE", Data=iiMfgDATA_BYTE Dict IiMfData, "W", Data=iiMfgDATA_WORD Dict IiMfData, "WORD", Data=iiMfgDATA_WORD Dict IiMfData, "D", Data=iiMfgDATA_DWORD Dict IiMfData, "DWORD",Data=iiMfgDATA_DWORD Dict IiMfData, "Q", Data=iiMfgDATA_QWORD Dict IiMfData, "QWORD",Data=iiMfgDATA_QWORD Dict IiMfData, "T", Data=iiMfgDATA_TBYTE Dict IiMfData, "TBYTE",Data=iiMfgDATA_TBYTE Dict IiMfData, "O", Data=iiMfgDATA_OWORD Dict IiMfData, "OWORD",Data=iiMfgDATA_OWORD Dict IiMfData, "Y", Data=iiMfgDATA_YWORD Dict IiMfData, "YWORD",Data=iiMfgDATA_YWORD Dict IiMfData, "Z", Data=iiMfgDATA_ZWORD Dict IiMfData, "ZWORD",Data=iiMfgDATA_ZWORD Dict End DictIiMfDisp:: Dict IiMfDisp, "B", Data=iiMfgDISP_BYTE Dict IiMfDisp, "BYTE", Data=iiMfgDISP_BYTE Dict IiMfDisp, "W", Data=iiMfgDISP_WORD Dict IiMfDisp, "WORD", Data=iiMfgDISP_WORD Dict IiMfDisp, "D", Data=iiMfgDISP_DWORD Dict IiMfDisp, "DWORD",Data=iiMfgDISP_DWORD Dict IiMfDisp, "Q", Data=iiMfgDISP_QWORD Dict IiMfDisp, "QWORD",Data=iiMfgDISP_QWORD Dict End DictIiMfImm:: Dict IiMfImm, "B", Data=iiMfgIMM_BYTE Dict IiMfImm, "BYTE", Data=iiMfgIMM_BYTE Dict IiMfImm, "W", Data=iiMfgIMM_WORD Dict IiMfImm, "WORD", Data=iiMfgIMM_WORD Dict IiMfImm, "D", Data=iiMfgIMM_DWORD Dict IiMfImm, "DWORD",Data=iiMfgIMM_DWORD Dict IiMfImm, "Q", Data=iiMfgIMM_QWORD Dict IiMfImm, "QWORD",Data=iiMfgIMM_QWORD Dict End DictIiMfDist:: Dict IiMfDist, "S", Data=iiMfgDIST_SHORT Dict IiMfDist, "SHORT",Data=iiMfgDIST_SHORT Dict IiMfDist, "N", Data=iiMfgDIST_NEAR Dict IiMfDist, "NEAR", Data=iiMfgDIST_NEAR Dict IiMfDist, "F", Data=iiMfgDIST_FAR Dict IiMfDist, "FAR", Data=iiMfgDIST_FAR Dict End DictIiMfAddr:: Dict IiMfAddr, "A", Data=iiMfgADDR_ABS Dict IiMfAddr, "ABS", Data=iiMfgADDR_ABS Dict IiMfAddr, "R", Data=iiMfgADDR_REL Dict IiMfAddr, "REL", Data=iiMfgADDR_REL Dict IiMfAddr, "P", Data=iiMfgADDR_PLT Dict IiMfAddr, "PLT", Data=iiMfgADDR_PLT Dict IiMfAddr, "G", Data=iiMfgADDR_GOT Dict IiMfAddr, "GOT", Data=iiMfgADDR_GOT Dict End DictIiMfScale:: Dict IiMfScale, "S", Data=iiMfgSCALE_SMART Dict IiMfScale, "SMART", Data=iiMfgSCALE_SMART Dict IiMfScale, "V", Data=iiMfgSCALE_VERBATIM Dict IiMfScale, "VERBATIM",Data=iiMfgSCALE_VERBATIM Dict End DictIiMfx:: ; AVX instruction modifier names. Dict Modifier, "PREFIX", Data=iiMfxPREFIX_Mask Dict Modifier, "MASK", Data=iiMfxMASK_Mask Dict Modifier, "ZEROING",Data=iiMfxZEROING_Mask Dict Modifier, "EH", Data=iiMfxEH_Mask Dict Modifier, "SAE", Data=iiMfxSAE_Mask Dict Modifier, "BCST", Data=iiMfxBCST_Mask Dict Modifier, "ROUND", Data=iiMfxROUND_Mask Dict Modifier, "OPER", Data=iiMfxOPER_Mask Dict End ; AVX instruction modifier enumerated values. DictIiMfPrefix:: Dict IiMfPrefix,"REX", Data=iiMfxPREFIX_REX Dict IiMfPrefix,"XOP", Data=iiMfxPREFIX_XOP Dict IiMfPrefix,"VEX2", Data=iiMfxPREFIX_VEX2 Dict IiMfPrefix,"VEX3", Data=iiMfxPREFIX_VEX3 Dict IiMfPrefix,"VEX", Data=iiMfxPREFIX_VEX Dict IiMfPrefix,"MVEX", Data=iiMfxPREFIX_MVEX Dict IiMfPrefix,"EVEX", Data=iiMfxPREFIX_EVEX Dict End DictIiMfMask:: Dict IiMfMask, "K0", Data=0 Dict IiMfMask, "K1", Data=1 Dict IiMfMask, "K2", Data=2 Dict IiMfMask, "K3", Data=3 Dict IiMfMask, "K4", Data=4 Dict IiMfMask, "K5", Data=5 Dict IiMfMask, "K6", Data=6 Dict IiMfMask, "K7", Data=7 Dict End DictIiMfRound:: Dict IiMfRound, "N", Data=iiMfxROUND_NEAR Dict IiMfRound, "NEAR", Data=iiMfxROUND_NEAR Dict IiMfRound, "D", Data=iiMfxROUND_DOWN Dict IiMfRound, "DOWN", Data=iiMfxROUND_DOWN Dict IiMfRound, "U", Data=iiMfxROUND_UP Dict IiMfRound, "UP", Data=iiMfxROUND_UP Dict IiMfRound, "Z", Data=iiMfxROUND_ZERO Dict IiMfRound, "ZERO", Data=iiMfxROUND_ZERO Dict End
DictUnaryOperators:: ;Data=priority + operator flags Dict Operator,"-", Data=13+dictUnary, DataName=Minus Dict Operator,"+", Data=13+dictUnary, DataName=Plus Dict Operator,"~", Data=08+dictUnary, DataName=BitwiseNot Dict Operator,"!", Data=04+dictUnary, DataName=LogicalNot Dict Operator,"SIZE#", Data=15+dictUnary, DataName=Size Dict Operator,"TYPE#", Data=15+dictUnary, DataName=Type Dict Operator,"REGTYPE#", Data=15+dictUnary, DataName=RegType Dict Operator,"SCOPE#", Data=15+dictUnary, DataName=Scope Dict Operator,"OFFSET#", Data=15+dictUnary, DataName=Offset Dict Operator,"SECTION#", Data=15+dictUnary, DataName=Section Dict Operator,"SEGMENT#", Data=15+dictUnary, DataName=Segment Dict Operator,"GROUP#", Data=15+dictUnary, DataName=Group Dict Operator,"PARA#", Data=15+dictUnary, DataName=Para Dict Operator,"FILESIZE#",Data=15+dictUnary, DataName=FileSize Dict Operator,"FILETIME#",Data=15+dictUnary, DataName=FileTime Dict End DictBinaryOperators:: ; Ordered from longest to one-char. ;DictOperators4:: Dict Operator,"!===",Data=14+dictStrCmp, DataName=SensNonEqual DictOperators3:: Dict Operator, "#<=",Data=05, DataName=LowerOrEqual ; > Dict Operator, "#>=",Data=05, DataName=GreaterOrEqual Dict Operator, "#<<",Data=12, DataName=ShiftArithmeticLeft ; >> Dict Operator, "#>>",Data=12, DataName=ShiftArithmeticRight Dict Operator, "!==",Data=14+dictStrCmp,DataName=InsensNonEqual Dict Operator, "===",Data=14+dictStrCmp,DataName=SensEqual ;DictOperators2:: Dict Operator, "!=" ,Data=05, DataName=NumericNonEqual Dict Operator, "<>" ,Data=05, DataName=NumericNonEqual2 Dict Operator, "==" ,Data=14+dictStrCmp,DataName=InsensEqual Dict Operator, ">=" ,Data=05, DataName=AboveOrEqual Dict Operator, "<=" ,Data=05, DataName=BelowOrEqual ; > Dict Operator, "<<" ,Data=12, DataName=ShiftLogicalLeft ; >> Dict Operator, ">>" ,Data=12, DataName=ShiftLogicalRight Dict Operator, "#*" ,Data=11, DataName=SignedMultiplication Dict Operator, "#/" ,Data=11, DataName=SignedDivision Dict Operator, "#\" ,Data=11, DataName=SignedModulo Dict Operator, "#>" ,Data=05, DataName=Greater Dict Operator, "#<" ,Data=05, DataName=Lower ; > Dict Operator, "&&" ,Data=03, DataName=LogicalAnd Dict Operator, "||" ,Data=02, DataName=LogicalOr Dict Operator, "^^" ,Data=02, DataName=LogicalXor ;DictOperators1:: Dict Operator, "+" ,Data=09, DataName=Addition ;Dict Operator, "+" ,Data=09, DataName=Indexing Dict Operator, "-" ,Data=09, DataName=Subtraction Dict Operator, "=" ,Data=05, DataName=NumericEqual Dict Operator, ">" ,Data=05, DataName=Above Dict Operator, "<" ,Data=05, DataName=Below ; > Dict Operator, "/" ,Data=11, DataName=Division Dict Operator, "\" ,Data=11, DataName=Modulo Dict Operator, "*" ,Data=11, DataName=Multiplication Dict Operator, "*" ,Data=10, DataName=Scaling ; Must appear *after* Multiplication here in DictOperators. Dict Operator, "&" ,Data=07, DataName=BitwiseAnd Dict Operator, "|" ,Data=06, DataName=BitwiseOr Dict Operator, "^" ,Data=06, DataName=BitwiseXor Dict Operator, ":" ,Data=01, DataName=SegmentSeparation ;Dict Operator, "." ,Data=15, DataName=Membership Dict End
FORMAT,MODEL,ICONFILE,SUBSYSTEM...
.DictPgmopt:: ; Dictionary of PROGRAM options and PROGRAM system %^variables. %ordinal %SETA 0 opt %FOR %PgmoptList %ordinal %SETA %ordinal + 1 Dict Pgmopt, "%opt", Data=%ordinal<<16 + varTypeSysPgmopt ;>> %ENDFOR opt Dict End
.Data
member is composed of
iiPfxCode
.
+------------- f: CPU features required by using this prefix: iiFeaDictPfxMask
.
+--+----------- c: CPU generation required by using this prefix: iiCpuDictPfxMask
.
++++--------------- g: Group which the prefix belongs to: iiPfxGrpAny
.
++++++++-++++++++-------------------- i: Identificator of the prefix: iiPfxMask
.
DictPrefixes:: ; External entry points DictPrefix*:: are used in IiFlush. ; mnemonic | opcode | group |identificator|CPU generation Dict Prefix,"REP" ,Data=0xF3|iiPfxGrp1|iiPfxREPE DictPrefixRepe:: Dict Prefix,"REPE" ,Data=0xF3|iiPfxGrp1|iiPfxREPE Dict Prefix,"REPZ" ,Data=0xF3|iiPfxGrp1|iiPfxREPE DictPrefixRepne:: Dict Prefix,"REPNE" ,Data=0xF2|iiPfxGrp1|iiPfxREPNE Dict Prefix,"REPNZ" ,Data=0xF2|iiPfxGrp1|iiPfxREPNE DictPrefixLock:: Dict Prefix,"LOCK" ,Data=0xF0|iiPfxGrp1|iiPfxLOCK DictPrefixesGrp2:: Dict Prefix,"SEGES" ,Data=0x26|iiPfxGrp2|iiPfxSEGES Dict Prefix,"SEGCS" ,Data=0x2E|iiPfxGrp2|iiPfxSEGCS Dict Prefix,"SEGSS" ,Data=0x36|iiPfxGrp2|iiPfxSEGSS Dict Prefix,"SEGDS" ,Data=0x3E|iiPfxGrp2|iiPfxSEGDS Dict Prefix,"SEGFS" ,Data=0x64|iiPfxGrp2|iiPfxSEGFS |iiCPU_386 Dict Prefix,"SEGGS" ,Data=0x65|iiPfxGrp2|iiPfxSEGGS |iiCPU_386 Dict Prefix,"OFTEN" ,Data=0x3E|iiPfxGrp2|iiPfxOFTEN |iiCPU_686 Dict Prefix,"SELDOM" ,Data=0x2E|iiPfxGrp2|iiPfxSELDOM |iiCPU_686 Dict Prefix,"XACQUIRE",Data=0xF2|iiPfxGrp1|iiPfxXACQUIRE|iiCPU_686|iiFea_TSX Dict Prefix,"XRELEASE",Data=0xF3|iiPfxGrp1|iiPfxXRELEASE|iiCPU_686|iiFea_TSX DictPrefixesGrp3:: Dict Prefix,"OTOGGLE" ,Data=0x66|iiPfxGrp3|iiPfxOTOGGLE |iiCPU_386 DictPrefixesGrp4:: Dict Prefix,"ATOGGLE", Data=0x67|iiPfxGrp4|iiPfxATOGGLE |iiCPU_386 Dict End
DictProgramFormats:: PF %FOR %PfList Dict Format,"%PF", Data=pgmopt%PF %ENDFOR PF Dict End
DictProgramModels:: Dict Model, "TINY", Data=pgmoptTINY Dict Model, "SMALL", Data=pgmoptSMALL Dict Model, "MEDIUM", Data=pgmoptMEDIUM Dict Model, "COMPACT",Data=pgmoptCOMPACT Dict Model, "LARGE", Data=pgmoptLARGE Dict Model, "HUGE", Data=pgmoptHUGE Dict Model, "FLAT", Data=pgmoptFLAT Dict End
DictProgramSubsystems:: Dict Subsystem, "NATIVE", Data= 1 ; Device drivers and native processes. Dict Subsystem, "GUI", Data= 2 ; MS Windows Graphical User Interface. Dict Subsystem, "CON", Data= 3 ; Console character subsystem. Default. Dict Subsystem, "OS2", Data= 5 ; OS/2 subsystem. Dict Subsystem, "POSIX", Data= 7 ; Posix character subsystem. Dict Subsystem, "WXD", Data= 8 ; MS Windows 95 drivers. Dict Subsystem, "WCE", Data= 9 ; MS Windows CE. Dict Subsystem, "EFI_APP", Data=10 ; EFI (Extensible Firmware Interface) application. Dict Subsystem, "EFI_BOOT",Data=11 ; EFI (Extensible Firmware Interface) boot-service driver. Dict Subsystem, "EFI_RT", Data=12 ; EFI (Extensible Firmware Interface) run-time driver. Dict Subsystem, "EFI_ROM", Data=13 ; EFI (Extensible Firmware Interface) ROM image. Dict Subsystem, "XBOX", Data=14 ; XBOX. Dict End
DictPseudo:: Dict Pseudo,"EUROASM" Dict Pseudo,"PROGRAM" Dict Pseudo,"ENDPROGRAM" Dict Pseudo,"HEAD" Dict Pseudo,"ENDHEAD" Dict Pseudo,"PROC" Dict Pseudo,"ENDPROC" Dict Pseudo,"ENDP", DataName=ENDPROC ; Alias. Dict Pseudo,"PROC1" Dict Pseudo,"ENDPROC1" Dict Pseudo,"ENDP1",DataName=ENDPROC1 ; Alias. Dict Pseudo,"STRUC" Dict Pseudo,"ENDSTRUC" Dict Pseudo,"GROUP" Dict Pseudo,"SEGMENT" Dict Pseudo,"EQU" Dict Pseudo,"=", DataName=EQU ; Alias. Dict Pseudo,"D" Dict Pseudo,"DB" Dict Pseudo,"DU" Dict Pseudo,"DW" Dict Pseudo,"DD" Dict Pseudo,"DQ" Dict Pseudo,"DT" Dict Pseudo,"DO" Dict Pseudo,"DY" Dict Pseudo,"DZ" Dict Pseudo,"DI" Dict Pseudo,"DS" Dict Pseudo,"ALIGN" Dict Pseudo,"GLOBAL" Dict Pseudo,"PUBLIC" Dict Pseudo,"EXTERN" Dict Pseudo,"EXPORT" Dict Pseudo,"INCLUDE" Dict Pseudo,"INCLUDE1" Dict Pseudo,"INCLUDEHEAD" Dict Pseudo,"INCLUDEHEAD1" Dict Pseudo,"INCLUDEBIN" Dict Pseudo,"LINK" Dict Pseudo,"IMPORT" DictPcPseudo:: ; Pseudoinstructions whose name begins with %. Dict Pseudo,"%%MACRO" Dict Pseudo,"%%EXITMACRO" Dict Pseudo,"%%SHIFT" Dict Pseudo,"%%ENDMACRO" Dict Pseudo,"%%DROPMACRO" Dict Pseudo,"%%IF" Dict Pseudo,"%%ELSE" Dict Pseudo,"%%ENDIF" Dict Pseudo,"%%FOR" Dict Pseudo,"%%EXITFOR" Dict Pseudo,"%%ENDFOR" Dict Pseudo,"%%WHILE" Dict Pseudo,"%%EXITWHILE" Dict Pseudo,"%%ENDWHILE" Dict Pseudo,"%%REPEAT" Dict Pseudo,"%%EXITREPEAT" Dict Pseudo,"%%ENDREPEAT" Dict Pseudo,"%%UNTIL" Dict Pseudo,"%%COMMENT" Dict Pseudo,"%%ENDCOMMENT" Dict Pseudo,"%%ERROR" Dict Pseudo,"%%DISPLAY" Dict Pseudo,"%%SETX" DictPseudoSET:: ; Pseudoinstructions %SET* except for %SETX. Dict Pseudo,"%%SET" Dict Pseudo,"%%SETA" Dict Pseudo,"%%SETB" Dict Pseudo,"%%SETC" Dict Pseudo,"%%SETE" Dict Pseudo,"%%SET2" Dict Pseudo,"%%SETS" Dict Pseudo,"%%SETL" Dict End
.Data
member is composed of
ssssss
in bits 24..29),iiRegOrd+iiRegFam
from Register encoding and
iiCpuRegReq + iiCpuRegProp
from CPU requirements.
iiRegIdMask
.
+++-++-----------------p: Register properties: iiRegPpMask
.
+-+-------++---+-----------c: CPU generation required by register: iiCpuDictRegMask
.
+-+-+--------+-+------------f: CPU features required by register: iiFeaDictRegMask
.
++++++-----------------------------s: Size of register in bytes (1..64).
DictRegisters:: ; ordinal Nr| size | family |features and properties Dict Register,"AL" , Data=0 |01<<24|iiReg_R08|iiCPU_086 ; >> Dict Register,"CL" , Data=1 |01<<24|iiReg_R08|iiCPU_086 ; >> Dict Register,"DL" , Data=2 |01<<24|iiReg_R08|iiCPU_086 ; >> Dict Register,"BL" , Data=3 |01<<24|iiReg_R08|iiCPU_086 ; >> Dict Register,"AH" , Data=4 |01<<24|iiReg_R08|iiCPU_086|iiRegNoREX ; >> Dict Register,"CH" , Data=5 |01<<24|iiReg_R08|iiCPU_086|iiRegNoREX ; >> Dict Register,"DH" , Data=6 |01<<24|iiReg_R08|iiCPU_086|iiRegNoREX ; >> Dict Register,"BH" , Data=7 |01<<24|iiReg_R08|iiCPU_086|iiRegNoREX ; >> Dict Register,"R8B" , Data=8 |01<<24|iiReg_R08|iiCPU_X64 ; >> Dict Register,"R8L" , Data=8 |01<<24|iiReg_R08|iiCPU_X64 ; >> Dict Register,"R9B" , Data=9 |01<<24|iiReg_R08|iiCPU_X64 ; >> Dict Register,"R9L" , Data=9 |01<<24|iiReg_R08|iiCPU_X64 ; >> Dict Register,"R10B", Data=10|01<<24|iiReg_R08|iiCPU_X64 ; >> Dict Register,"R10L", Data=10|01<<24|iiReg_R08|iiCPU_X64 ; >> Dict Register,"R11B", Data=11|01<<24|iiReg_R08|iiCPU_X64 ; >> Dict Register,"R11L", Data=11|01<<24|iiReg_R08|iiCPU_X64 ; >> Dict Register,"R12B", Data=12|01<<24|iiReg_R08|iiCPU_X64 ; >> Dict Register,"R12L", Data=12|01<<24|iiReg_R08|iiCPU_X64 ; >> Dict Register,"R13B", Data=13|01<<24|iiReg_R08|iiCPU_X64 ; >> Dict Register,"R13L", Data=13|01<<24|iiReg_R08|iiCPU_X64 ; >> Dict Register,"R14B", Data=14|01<<24|iiReg_R08|iiCPU_X64 ; >> Dict Register,"R14L", Data=14|01<<24|iiReg_R08|iiCPU_X64 ; >> Dict Register,"R15B", Data=15|01<<24|iiReg_R08|iiCPU_X64 ; >> Dict Register,"R15L", Data=15|01<<24|iiReg_R08|iiCPU_X64 ; >> Dict Register,"SPB" , Data=4 |01<<24|iiReg_R08|iiCPU_X64|iiRegREX ; >> Dict Register,"SPL" , Data=4 |01<<24|iiReg_R08|iiCPU_X64|iiRegREX ; >> Dict Register,"BPB" , Data=5 |01<<24|iiReg_R08|iiCPU_X64|iiRegREX ; >> Dict Register,"BPL" , Data=5 |01<<24|iiReg_R08|iiCPU_X64|iiRegREX ; >> Dict Register,"SIB" , Data=6 |01<<24|iiReg_R08|iiCPU_X64|iiRegREX ; >> Dict Register,"SIL" , Data=6 |01<<24|iiReg_R08|iiCPU_X64|iiRegREX ; >> Dict Register,"DIB" , Data=7 |01<<24|iiReg_R08|iiCPU_X64|iiRegREX ; >> Dict Register,"DIL" , Data=7 |01<<24|iiReg_R08|iiCPU_X64|iiRegREX ; >> Dict Register,"AX" , Data=0 |02<<24|iiReg_R16|iiCPU_086 ; >> Dict Register,"CX" , Data=1 |02<<24|iiReg_R16|iiCPU_086 ; >> Dict Register,"DX" , Data=2 |02<<24|iiReg_R16|iiCPU_086 ; >> Dict Register,"BX" , Data=3 |02<<24|iiReg_R16|iiCPU_086|iiRegBase ; >> Dict Register,"SP" , Data=4 |02<<24|iiReg_R16|iiCPU_086 ; >> Dict Register,"BP" , Data=5 |02<<24|iiReg_R16|iiCPU_086|iiRegBase ; >> Dict Register,"SI" , Data=6 |02<<24|iiReg_R16|iiCPU_086|iiRegIndex ; >> Dict Register,"DI" , Data=7 |02<<24|iiReg_R16|iiCPU_086|iiRegIndex ; >> Dict Register,"R8W" , Data=8 |02<<24|iiReg_R16|iiCPU_X64 ; >> Dict Register,"R9W" , Data=9 |02<<24|iiReg_R16|iiCPU_X64 ; >> Dict Register,"R10W", Data=10|02<<24|iiReg_R16|iiCPU_X64 ; >> Dict Register,"R11W", Data=11|02<<24|iiReg_R16|iiCPU_X64 ; >> Dict Register,"R12W", Data=12|02<<24|iiReg_R16|iiCPU_X64 ; >> Dict Register,"R13W", Data=13|02<<24|iiReg_R16|iiCPU_X64 ; >> Dict Register,"R14W", Data=14|02<<24|iiReg_R16|iiCPU_X64 ; >> Dict Register,"R15W", Data=15|02<<24|iiReg_R16|iiCPU_X64 ; >> Dict Register,"EAX" , Data=0 |04<<24|iiReg_R32|iiCPU_386|iiRegBase|iiRegIndex ; >> Dict Register,"ECX" , Data=1 |04<<24|iiReg_R32|iiCPU_386|iiRegBase|iiRegIndex ; >> Dict Register,"EDX" , Data=2 |04<<24|iiReg_R32|iiCPU_386|iiRegBase|iiRegIndex ; >> Dict Register,"EBX" , Data=3 |04<<24|iiReg_R32|iiCPU_386|iiRegBase|iiRegIndex ; >> Dict Register,"ESP" , Data=4 |04<<24|iiReg_R32|iiCPU_386|iiRegBase ; >> Dict Register,"EBP" , Data=5 |04<<24|iiReg_R32|iiCPU_386|iiRegBase|iiRegIndex ; >> Dict Register,"ESI" , Data=6 |04<<24|iiReg_R32|iiCPU_386|iiRegBase|iiRegIndex ; >> Dict Register,"EDI" , Data=7 |04<<24|iiReg_R32|iiCPU_386|iiRegBase|iiRegIndex ; >> Dict Register,"R8D" , Data=8 |04<<24|iiReg_R32|iiCPU_X64|iiRegBase|iiRegIndex ; >> Dict Register,"R9D" , Data=9 |04<<24|iiReg_R32|iiCPU_X64|iiRegBase|iiRegIndex ; >> Dict Register,"R10D", Data=10|04<<24|iiReg_R32|iiCPU_X64|iiRegBase|iiRegIndex ; >> Dict Register,"R11D", Data=11|04<<24|iiReg_R32|iiCPU_X64|iiRegBase|iiRegIndex ; >> Dict Register,"R12D", Data=12|04<<24|iiReg_R32|iiCPU_X64|iiRegBase|iiRegIndex ; >> Dict Register,"R13D", Data=13|04<<24|iiReg_R32|iiCPU_X64|iiRegBase|iiRegIndex ; >> Dict Register,"R14D", Data=14|04<<24|iiReg_R32|iiCPU_X64|iiRegBase|iiRegIndex ; >> Dict Register,"R15D", Data=15|04<<24|iiReg_R32|iiCPU_X64|iiRegBase|iiRegIndex ; >> Dict Register,"RAX" , Data=0 |08<<24|iiReg_R64|iiCPU_X64|iiRegBase|iiRegIndex ; >> Dict Register,"RCX" , Data=1 |08<<24|iiReg_R64|iiCPU_X64|iiRegBase|iiRegIndex ; >> Dict Register,"RDX" , Data=2 |08<<24|iiReg_R64|iiCPU_X64|iiRegBase|iiRegIndex ; >> Dict Register,"RBX" , Data=3 |08<<24|iiReg_R64|iiCPU_X64|iiRegBase|iiRegIndex ; >> Dict Register,"RSP" , Data=4 |08<<24|iiReg_R64|iiCPU_X64|iiRegBase ; >> Dict Register,"RBP" , Data=5 |08<<24|iiReg_R64|iiCPU_X64|iiRegBase|iiRegIndex ; >> Dict Register,"RSI" , Data=6 |08<<24|iiReg_R64|iiCPU_X64|iiRegBase|iiRegIndex ; >> Dict Register,"RDI" , Data=7 |08<<24|iiReg_R64|iiCPU_X64|iiRegBase|iiRegIndex ; >> Dict Register,"R8" , Data=8 |08<<24|iiReg_R64|iiCPU_X64|iiRegBase|iiRegIndex ; >> Dict Register,"R9" , Data=9 |08<<24|iiReg_R64|iiCPU_X64|iiRegBase|iiRegIndex ; >> Dict Register,"R10" , Data=10|08<<24|iiReg_R64|iiCPU_X64|iiRegBase|iiRegIndex ; >> Dict Register,"R11" , Data=11|08<<24|iiReg_R64|iiCPU_X64|iiRegBase|iiRegIndex ; >> Dict Register,"R12" , Data=12|08<<24|iiReg_R64|iiCPU_X64|iiRegBase|iiRegIndex ; >> Dict Register,"R13" , Data=13|08<<24|iiReg_R64|iiCPU_X64|iiRegBase|iiRegIndex ; >> Dict Register,"R14" , Data=14|08<<24|iiReg_R64|iiCPU_X64|iiRegBase|iiRegIndex ; >> Dict Register,"R15" , Data=15|08<<24|iiReg_R64|iiCPU_X64|iiRegBase|iiRegIndex ; >> Dict Register,"ES" , Data=0 |02<<24|iiReg_SEG|iiCPU_086|iiRegSeg ; >> Dict Register,"CS" , Data=1 |02<<24|iiReg_SEG|iiCPU_086|iiRegSeg ; >> Dict Register,"SS" , Data=2 |02<<24|iiReg_SEG|iiCPU_086|iiRegSeg ; >> Dict Register,"DS" , Data=3 |02<<24|iiReg_SEG|iiCPU_086|iiRegSeg ; >> Dict Register,"FS" , Data=4 |02<<24|iiReg_SEG|iiCPU_386|iiRegSeg ; >> Dict Register,"GS" , Data=5 |02<<24|iiReg_SEG|iiCPU_386|iiRegSeg ; >> Dict Register,"SEGR6",Data=6 |02<<24|iiReg_SEG|iiCPU_386|iiRegSeg|iiFea_UNDOC ; >> Dict Register,"SEGR7",Data=7 |02<<24|iiReg_SEG|iiCPU_386|iiRegSeg|iiFea_UNDOC ; >> Dict Register,"K0" , Data=0 |08<<24|iiReg_KRG|iiCPU_386|iiCPU_AVX512 ; >> Dict Register,"K1" , Data=1 |08<<24|iiReg_KRG|iiCPU_386|iiCPU_AVX512 ; >> Dict Register,"K2" , Data=2 |08<<24|iiReg_KRG|iiCPU_386|iiCPU_AVX512 ; >> Dict Register,"K3" , Data=3 |08<<24|iiReg_KRG|iiCPU_386|iiCPU_AVX512 ; >> Dict Register,"K4" , Data=4 |08<<24|iiReg_KRG|iiCPU_386|iiCPU_AVX512 ; >> Dict Register,"K5" , Data=5 |08<<24|iiReg_KRG|iiCPU_386|iiCPU_AVX512 ; >> Dict Register,"K6" , Data=6 |08<<24|iiReg_KRG|iiCPU_386|iiCPU_AVX512 ; >> Dict Register,"K7" , Data=7 |08<<24|iiReg_KRG|iiCPU_386|iiCPU_AVX512 ; >> Dict Register,"BND0", Data=0 |16<<24|iiReg_BND|iiCPU_386|iiFea_MPX ; >> Dict Register,"BND1", Data=1 |16<<24|iiReg_BND|iiCPU_386|iiFea_MPX ; >> Dict Register,"BND2", Data=2 |16<<24|iiReg_BND|iiCPU_386|iiFea_MPX ; >> Dict Register,"BND3", Data=3 |16<<24|iiReg_BND|iiCPU_386|iiFea_MPX ; >> Dict Register,"CR0" , Data=0 |04<<24|iiReg_CTR|iiCPU_386|iiFea_PRIV ; >> Dict Register,"CR1" , Data=1 |04<<24|iiReg_CTR|iiCPU_386|iiFea_PRIV|iiFea_UNDOC ; >> Dict Register,"CR2" , Data=2 |04<<24|iiReg_CTR|iiCPU_386|iiFea_PRIV ; >> Dict Register,"CR3" , Data=3 |04<<24|iiReg_CTR|iiCPU_386|iiFea_PRIV ; >> Dict Register,"CR4" , Data=4 |04<<24|iiReg_CTR|iiCPU_386|iiFea_PRIV ; >> Dict Register,"CR5" , Data=5 |04<<24|iiReg_CTR|iiCPU_386|iiFea_PRIV|iiFea_UNDOC ; >> Dict Register,"CR6" , Data=6 |04<<24|iiReg_CTR|iiCPU_386|iiFea_PRIV|iiFea_UNDOC ; >> Dict Register,"CR7" , Data=7 |04<<24|iiReg_CTR|iiCPU_386|iiFea_PRIV|iiFea_UNDOC ; >> Dict Register,"CR8" , Data=8 |04<<24|iiReg_CT8|iiCPU_X64|iiFea_PRIV ; >> Dict Register,"DR0" , Data=0 |04<<24|iiReg_DGR|iiCPU_386|iiFea_PRIV ; >> Dict Register,"DR1" , Data=1 |04<<24|iiReg_DGR|iiCPU_386|iiFea_PRIV ; >> Dict Register,"DR2" , Data=2 |04<<24|iiReg_DGR|iiCPU_386|iiFea_PRIV ; >> Dict Register,"DR3" , Data=3 |04<<24|iiReg_DGR|iiCPU_386|iiFea_PRIV ; >> Dict Register,"DR4" , Data=4 |04<<24|iiReg_DGR|iiCPU_386|iiFea_PRIV|iiFea_UNDOC ; >> Dict Register,"DR5" , Data=5 |04<<24|iiReg_DGR|iiCPU_386|iiFea_PRIV|iiFea_UNDOC ; >> Dict Register,"DR6" , Data=6 |04<<24|iiReg_DGR|iiCPU_386|iiFea_PRIV ; >> Dict Register,"DR7" , Data=7 |04<<24|iiReg_DGR|iiCPU_386|iiFea_PRIV ; >> Dict Register,"TR0" , Data=0 |04<<24|iiReg_TSR|iiCPU_386|iiFea_PRIV|iiFea_UNDOC ; >> Dict Register,"TR1" , Data=1 |04<<24|iiReg_TSR|iiCPU_386|iiFea_PRIV|iiFea_UNDOC ; >> Dict Register,"TR2" , Data=2 |04<<24|iiReg_TSR|iiCPU_386|iiFea_PRIV|iiFea_UNDOC ; >> Dict Register,"TR3" , Data=3 |04<<24|iiReg_TSR|iiCPU_386|iiFea_PRIV|iiFea_UNDOC ; >> Dict Register,"TR4" , Data=4 |04<<24|iiReg_TSR|iiCPU_386|iiFea_PRIV|iiFea_UNDOC ; >> Dict Register,"TR5" , Data=5 |04<<24|iiReg_TSR|iiCPU_386|iiFea_PRIV|iiFea_UNDOC ; >> Dict Register,"TR6" , Data=6 |04<<24|iiReg_TSR|iiCPU_386|iiFea_PRIV|iiFea_UNDOC ; >> Dict Register,"TR7" , Data=7 |04<<24|iiReg_TSR|iiCPU_386|iiFea_PRIV|iiFea_UNDOC ; >> Dict Register,"ST0" , Data=0 |10<<24|iiReg_FPR|iiCPU_086|iiFea_FPU ; >> Dict Register,"ST1" , Data=1 |10<<24|iiReg_FPR|iiCPU_086|iiFea_FPU ; >> Dict Register,"ST2" , Data=2 |10<<24|iiReg_FPR|iiCPU_086|iiFea_FPU ; >> Dict Register,"ST3" , Data=3 |10<<24|iiReg_FPR|iiCPU_086|iiFea_FPU ; >> Dict Register,"ST4" , Data=4 |10<<24|iiReg_FPR|iiCPU_086|iiFea_FPU ; >> Dict Register,"ST5" , Data=5 |10<<24|iiReg_FPR|iiCPU_086|iiFea_FPU ; >> Dict Register,"ST6" , Data=6 |10<<24|iiReg_FPR|iiCPU_086|iiFea_FPU ; >> Dict Register,"ST7" , Data=7 |10<<24|iiReg_FPR|iiCPU_086|iiFea_FPU ; >> Dict Register,"MM0" , Data=0 |08<<24|iiReg_MMX|iiCPU_386|iiFea_MMX ; >> Dict Register,"MM1" , Data=1 |08<<24|iiReg_MMX|iiCPU_386|iiFea_MMX ; >> Dict Register,"MM2" , Data=2 |08<<24|iiReg_MMX|iiCPU_386|iiFea_MMX ; >> Dict Register,"MM3" , Data=3 |08<<24|iiReg_MMX|iiCPU_386|iiFea_MMX ; >> Dict Register,"MM4" , Data=4 |08<<24|iiReg_MMX|iiCPU_386|iiFea_MMX ; >> Dict Register,"MM5" , Data=5 |08<<24|iiReg_MMX|iiCPU_386|iiFea_MMX ; >> Dict Register,"MM6" , Data=6 |08<<24|iiReg_MMX|iiCPU_386|iiFea_MMX ; >> Dict Register,"MM7" , Data=7 |08<<24|iiReg_MMX|iiCPU_386|iiFea_MMX ; >> Dict Register,"XMM0", Data=0 |16<<24|iiReg_XMM|iiRegIndex|iiCPU_386|iiCPU_SSE1 ; >> Dict Register,"XMM1", Data=1 |16<<24|iiReg_XMM|iiRegIndex|iiCPU_386|iiCPU_SSE1 ; >> Dict Register,"XMM2", Data=2 |16<<24|iiReg_XMM|iiRegIndex|iiCPU_386|iiCPU_SSE1 ; >> Dict Register,"XMM3", Data=3 |16<<24|iiReg_XMM|iiRegIndex|iiCPU_386|iiCPU_SSE1 ; >> Dict Register,"XMM4", Data=4 |16<<24|iiReg_XMM|iiRegIndex|iiCPU_386|iiCPU_SSE1 ; >> Dict Register,"XMM5", Data=5 |16<<24|iiReg_XMM|iiRegIndex|iiCPU_386|iiCPU_SSE1 ; >> Dict Register,"XMM6", Data=6 |16<<24|iiReg_XMM|iiRegIndex|iiCPU_386|iiCPU_SSE1 ; >> Dict Register,"XMM7", Data=7 |16<<24|iiReg_XMM|iiRegIndex|iiCPU_386|iiCPU_SSE1 ; >> Dict Register,"XMM8", Data=8 |16<<24|iiReg_XMM|iiRegIndex|iiCPU_X64|iiCPU_SSE1 ; >> Dict Register,"XMM9", Data=9 |16<<24|iiReg_XMM|iiRegIndex|iiCPU_X64|iiCPU_SSE1 ; >> Dict Register,"XMM10",Data=10|16<<24|iiReg_XMM|iiRegIndex|iiCPU_X64|iiCPU_SSE1 ; >> Dict Register,"XMM11",Data=11|16<<24|iiReg_XMM|iiRegIndex|iiCPU_X64|iiCPU_SSE1 ; >> Dict Register,"XMM12",Data=12|16<<24|iiReg_XMM|iiRegIndex|iiCPU_X64|iiCPU_SSE1 ; >> Dict Register,"XMM13",Data=13|16<<24|iiReg_XMM|iiRegIndex|iiCPU_X64|iiCPU_SSE1 ; >> Dict Register,"XMM14",Data=14|16<<24|iiReg_XMM|iiRegIndex|iiCPU_X64|iiCPU_SSE1 ; >> Dict Register,"XMM15",Data=15|16<<24|iiReg_XMM|iiRegIndex|iiCPU_X64|iiCPU_SSE1 ; >> Dict Register,"XMM16",Data=16|16<<24|iiReg_XMM|iiRegIndex|iiCPU_X64|iiCPU_AVX512 ; >> Dict Register,"XMM17",Data=17|16<<24|iiReg_XMM|iiRegIndex|iiCPU_X64|iiCPU_AVX512 ; >> Dict Register,"XMM18",Data=18|16<<24|iiReg_XMM|iiRegIndex|iiCPU_X64|iiCPU_AVX512 ; >> Dict Register,"XMM19",Data=19|16<<24|iiReg_XMM|iiRegIndex|iiCPU_X64|iiCPU_AVX512 ; >> Dict Register,"XMM20",Data=20|16<<24|iiReg_XMM|iiRegIndex|iiCPU_X64|iiCPU_AVX512 ; >> Dict Register,"XMM21",Data=21|16<<24|iiReg_XMM|iiRegIndex|iiCPU_X64|iiCPU_AVX512 ; >> Dict Register,"XMM22",Data=22|16<<24|iiReg_XMM|iiRegIndex|iiCPU_X64|iiCPU_AVX512 ; >> Dict Register,"XMM23",Data=23|16<<24|iiReg_XMM|iiRegIndex|iiCPU_X64|iiCPU_AVX512 ; >> Dict Register,"XMM24",Data=24|16<<24|iiReg_XMM|iiRegIndex|iiCPU_X64|iiCPU_AVX512 ; >> Dict Register,"XMM25",Data=25|16<<24|iiReg_XMM|iiRegIndex|iiCPU_X64|iiCPU_AVX512 ; >> Dict Register,"XMM26",Data=26|16<<24|iiReg_XMM|iiRegIndex|iiCPU_X64|iiCPU_AVX512 ; >> Dict Register,"XMM27",Data=27|16<<24|iiReg_XMM|iiRegIndex|iiCPU_X64|iiCPU_AVX512 ; >> Dict Register,"XMM28",Data=28|16<<24|iiReg_XMM|iiRegIndex|iiCPU_X64|iiCPU_AVX512 ; >> Dict Register,"XMM29",Data=29|16<<24|iiReg_XMM|iiRegIndex|iiCPU_X64|iiCPU_AVX512 ; >> Dict Register,"XMM30",Data=30|16<<24|iiReg_XMM|iiRegIndex|iiCPU_X64|iiCPU_AVX512 ; >> Dict Register,"XMM31",Data=31|16<<24|iiReg_XMM|iiRegIndex|iiCPU_X64|iiCPU_AVX512 ; >> Dict Register,"YMM0", Data=0 |32<<24|iiReg_YMM|iiRegIndex|iiCPU_386|iiCPU_AVX ; >> Dict Register,"YMM1", Data=1 |32<<24|iiReg_YMM|iiRegIndex|iiCPU_386|iiCPU_AVX ; >> Dict Register,"YMM2", Data=2 |32<<24|iiReg_YMM|iiRegIndex|iiCPU_386|iiCPU_AVX ; >> Dict Register,"YMM3", Data=3 |32<<24|iiReg_YMM|iiRegIndex|iiCPU_386|iiCPU_AVX ; >> Dict Register,"YMM4", Data=4 |32<<24|iiReg_YMM|iiRegIndex|iiCPU_386|iiCPU_AVX ; >> Dict Register,"YMM5", Data=5 |32<<24|iiReg_YMM|iiRegIndex|iiCPU_386|iiCPU_AVX ; >> Dict Register,"YMM6", Data=6 |32<<24|iiReg_YMM|iiRegIndex|iiCPU_386|iiCPU_AVX ; >> Dict Register,"YMM7", Data=7 |32<<24|iiReg_YMM|iiRegIndex|iiCPU_386|iiCPU_AVX ; >> Dict Register,"YMM8", Data=8 |32<<24|iiReg_YMM|iiRegIndex|iiCPU_X64|iiCPU_AVX ; >> Dict Register,"YMM9", Data=9 |32<<24|iiReg_YMM|iiRegIndex|iiCPU_X64|iiCPU_AVX ; >> Dict Register,"YMM10",Data=10|32<<24|iiReg_YMM|iiRegIndex|iiCPU_X64|iiCPU_AVX ; >> Dict Register,"YMM11",Data=11|32<<24|iiReg_YMM|iiRegIndex|iiCPU_X64|iiCPU_AVX ; >> Dict Register,"YMM12",Data=12|32<<24|iiReg_YMM|iiRegIndex|iiCPU_X64|iiCPU_AVX ; >> Dict Register,"YMM13",Data=13|32<<24|iiReg_YMM|iiRegIndex|iiCPU_X64|iiCPU_AVX ; >> Dict Register,"YMM14",Data=14|32<<24|iiReg_YMM|iiRegIndex|iiCPU_X64|iiCPU_AVX ; >> Dict Register,"YMM15",Data=15|32<<24|iiReg_YMM|iiRegIndex|iiCPU_X64|iiCPU_AVX ; >> Dict Register,"YMM16",Data=16|32<<24|iiReg_YMM|iiRegIndex|iiCPU_X64|iiCPU_AVX512 ; >> Dict Register,"YMM17",Data=17|32<<24|iiReg_YMM|iiRegIndex|iiCPU_X64|iiCPU_AVX512 ; >> Dict Register,"YMM18",Data=18|32<<24|iiReg_YMM|iiRegIndex|iiCPU_X64|iiCPU_AVX512 ; >> Dict Register,"YMM19",Data=19|32<<24|iiReg_YMM|iiRegIndex|iiCPU_X64|iiCPU_AVX512 ; >> Dict Register,"YMM20",Data=20|32<<24|iiReg_YMM|iiRegIndex|iiCPU_X64|iiCPU_AVX512 ; >> Dict Register,"YMM21",Data=21|32<<24|iiReg_YMM|iiRegIndex|iiCPU_X64|iiCPU_AVX512 ; >> Dict Register,"YMM22",Data=22|32<<24|iiReg_YMM|iiRegIndex|iiCPU_X64|iiCPU_AVX512 ; >> Dict Register,"YMM23",Data=23|32<<24|iiReg_YMM|iiRegIndex|iiCPU_X64|iiCPU_AVX512 ; >> Dict Register,"YMM24",Data=24|32<<24|iiReg_YMM|iiRegIndex|iiCPU_X64|iiCPU_AVX512 ; >> Dict Register,"YMM25",Data=25|32<<24|iiReg_YMM|iiRegIndex|iiCPU_X64|iiCPU_AVX512 ; >> Dict Register,"YMM26",Data=26|32<<24|iiReg_YMM|iiRegIndex|iiCPU_X64|iiCPU_AVX512 ; >> Dict Register,"YMM27",Data=27|32<<24|iiReg_YMM|iiRegIndex|iiCPU_X64|iiCPU_AVX512 ; >> Dict Register,"YMM28",Data=28|32<<24|iiReg_YMM|iiRegIndex|iiCPU_X64|iiCPU_AVX512 ; >> Dict Register,"YMM29",Data=29|32<<24|iiReg_YMM|iiRegIndex|iiCPU_X64|iiCPU_AVX512 ; >> Dict Register,"YMM30",Data=30|32<<24|iiReg_YMM|iiRegIndex|iiCPU_X64|iiCPU_AVX512 ; >> Dict Register,"YMM31",Data=31|32<<24|iiReg_YMM|iiRegIndex|iiCPU_X64|iiCPU_AVX512 ; >> Dict Register,"ZMM0", Data=0 |64<<24|iiReg_ZMM|iiRegIndex|iiCPU_386|iiCPU_AVX512 ; >> Dict Register,"ZMM1", Data=1 |64<<24|iiReg_ZMM|iiRegIndex|iiCPU_386|iiCPU_AVX512 ; >> Dict Register,"ZMM2", Data=2 |64<<24|iiReg_ZMM|iiRegIndex|iiCPU_386|iiCPU_AVX512 ; >> Dict Register,"ZMM3", Data=3 |64<<24|iiReg_ZMM|iiRegIndex|iiCPU_386|iiCPU_AVX512 ; >> Dict Register,"ZMM4", Data=4 |64<<24|iiReg_ZMM|iiRegIndex|iiCPU_386|iiCPU_AVX512 ; >> Dict Register,"ZMM5", Data=5 |64<<24|iiReg_ZMM|iiRegIndex|iiCPU_386|iiCPU_AVX512 ; >> Dict Register,"ZMM6", Data=6 |64<<24|iiReg_ZMM|iiRegIndex|iiCPU_386|iiCPU_AVX512 ; >> Dict Register,"ZMM7", Data=7 |64<<24|iiReg_ZMM|iiRegIndex|iiCPU_386|iiCPU_AVX512 ; >> Dict Register,"ZMM8", Data=8 |64<<24|iiReg_ZMM|iiRegIndex|iiCPU_X64|iiCPU_AVX512 ; >> Dict Register,"ZMM9", Data=9 |64<<24|iiReg_ZMM|iiRegIndex|iiCPU_X64|iiCPU_AVX512 ; >> Dict Register,"ZMM10",Data=10|64<<24|iiReg_ZMM|iiRegIndex|iiCPU_X64|iiCPU_AVX512 ; >> Dict Register,"ZMM11",Data=11|64<<24|iiReg_ZMM|iiRegIndex|iiCPU_X64|iiCPU_AVX512 ; >> Dict Register,"ZMM12",Data=12|64<<24|iiReg_ZMM|iiRegIndex|iiCPU_X64|iiCPU_AVX512 ; >> Dict Register,"ZMM13",Data=13|64<<24|iiReg_ZMM|iiRegIndex|iiCPU_X64|iiCPU_AVX512 ; >> Dict Register,"ZMM14",Data=14|64<<24|iiReg_ZMM|iiRegIndex|iiCPU_X64|iiCPU_AVX512 ; >> Dict Register,"ZMM15",Data=15|64<<24|iiReg_ZMM|iiRegIndex|iiCPU_X64|iiCPU_AVX512 ; >> Dict Register,"ZMM16",Data=16|64<<24|iiReg_ZMM|iiRegIndex|iiCPU_X64|iiCPU_AVX512 ; >> Dict Register,"ZMM17",Data=17|64<<24|iiReg_ZMM|iiRegIndex|iiCPU_X64|iiCPU_AVX512 ; >> Dict Register,"ZMM18",Data=18|64<<24|iiReg_ZMM|iiRegIndex|iiCPU_X64|iiCPU_AVX512 ; >> Dict Register,"ZMM19",Data=19|64<<24|iiReg_ZMM|iiRegIndex|iiCPU_X64|iiCPU_AVX512 ; >> Dict Register,"ZMM20",Data=20|64<<24|iiReg_ZMM|iiRegIndex|iiCPU_X64|iiCPU_AVX512 ; >> Dict Register,"ZMM21",Data=21|64<<24|iiReg_ZMM|iiRegIndex|iiCPU_X64|iiCPU_AVX512 ; >> Dict Register,"ZMM22",Data=22|64<<24|iiReg_ZMM|iiRegIndex|iiCPU_X64|iiCPU_AVX512 ; >> Dict Register,"ZMM23",Data=23|64<<24|iiReg_ZMM|iiRegIndex|iiCPU_X64|iiCPU_AVX512 ; >> Dict Register,"ZMM24",Data=24|64<<24|iiReg_ZMM|iiRegIndex|iiCPU_X64|iiCPU_AVX512 ; >> Dict Register,"ZMM25",Data=25|64<<24|iiReg_ZMM|iiRegIndex|iiCPU_X64|iiCPU_AVX512 ; >> Dict Register,"ZMM26",Data=26|64<<24|iiReg_ZMM|iiRegIndex|iiCPU_X64|iiCPU_AVX512 ; >> Dict Register,"ZMM27",Data=27|64<<24|iiReg_ZMM|iiRegIndex|iiCPU_X64|iiCPU_AVX512 ; >> Dict Register,"ZMM28",Data=28|64<<24|iiReg_ZMM|iiRegIndex|iiCPU_X64|iiCPU_AVX512 ; >> Dict Register,"ZMM29",Data=29|64<<24|iiReg_ZMM|iiRegIndex|iiCPU_X64|iiCPU_AVX512 ; >> Dict Register,"ZMM30",Data=30|64<<24|iiReg_ZMM|iiRegIndex|iiCPU_X64|iiCPU_AVX512 ; >> Dict Register,"ZMM31",Data=31|64<<24|iiReg_ZMM|iiRegIndex|iiCPU_X64|iiCPU_AVX512 ; >> Dict End
COMBINE=
enumerated values.
DictSegmentCombine:: Dict Combine, "PUBLIC", Data=sssPublic Dict Combine, "PRIVATE",Data=sssPrivate Dict Combine, "COMMON", Data=sssCommon Dict Combine, "STACK", Data=sssStack Dict End
DictSegmentKeys:: Dict Segment, "PURPOSE", Data=PseudoSEGMENT.Purpose:: Dict Segment, "WIDTH", Data=PseudoSEGMENT.Width:: Dict Segment, "ALIGN", Data=PseudoSEGMENT.Align:: Dict Segment, "COMBINE", Data=PseudoSEGMENT.Combine:: Dict Segment, "CLASS", Data=PseudoSEGMENT.Class:: Dict End
PURPOSE=
enumerated values.
DictSegmentPurpose:: PURPOSE %FOR %SssPurposeList Dict Purpose, "%PURPOSE", Data=sssPurpose%PURPOSE %ENDFOR PURPOSE ; Some purposes may be defined by aliases: Dict Purpose, "TEXT", Data=sssPurposeCODE Dict Purpose, "LITERALS", Data=sssPurposeLITERAL Dict Purpose, "IDATA", Data=sssPurposeDATA Dict Purpose, "RDATA", Data=sssPurposeRODATA Dict Purpose, "UDATA", Data=sssPurposeBSS Dict Purpose, "ARCHITECTURE", Data=sssPurposeCOPYRIGHT Dict End
[.text] DictLookup Procedure Table, TxtPtr, TxtSize SUB ECX,ECX MOV EAX,[%TxtSize] MOV ESI,[%TxtPtr] MOV [%ReturnEAX],ECX MOV ECX,EAX Align2Dword EAX STC JECXZ .90: ; Empty Txt is not found. CMP EAX,32 ; No dictionary text is that long. CMC JC .90: SUB ESP,EAX MOV EDI,ESP .10: LODSB CMP AL,'a' JB .20: CMP AL,'z' JA .20 SUB AL,'a'-'A' ; Convert to upper case. .20: STOSB DEC ECX JNZ .10: MOV EBX,[%Table] SUB EBX,SIZE#DICT .30: ADD EBX,SIZE#DICT MOV ECX,[EBX+DICT.Size] STC JECXZ .90: ; End of table. CMP ECX,[%TxtSize] JNE .30: MOV ESI,[EBX+DICT.Ptr] MOV EDI,ESP REPE CMPSB JNE .30: MOV EAX,[EBX+DICT.Data] MOV [%ReturnEAX],EAX .90: EndProcedure DictLookup
Procedure DictLookupObj performs case-insensitive search for the object name and returns pointer to the corresponding %DISPLAY handler subprocedure.
Unlike DictLookup, the object name needs not to exactly match a full dictionary item in DictDisplayObj, it may be shorter.
DictLookupObj Procedure ObjPtr,ObjSize SUB EAX,EAX MOV ECX,[%ObjSize] MOV ESI,[%ObjPtr] MOV [%ReturnEAX],EAX MOV EAX,ECX MOV EDX,ECX Align2Dword EAX STC JECXZ .90: ; Empty Txt is not found. CMP EAX,24 CMC JC .90: ; No searched category name can be that long. SUB ESP,EAX ; Make room for uppercase name. MOV EDI,ESP .10: LODSB CMP AL,'a' JB .20: CMP AL,'z' JA .20 SUB AL,'a'-'A' ; Convert to upper case. .20: STOSB DEC ECX JNZ .10: MOV EBX,DictDisplayObj ; Dictionary table with %DISPLAY categories. SUB EBX,SIZE#DICT .30: ADD EBX,SIZE#DICT MOV ECX,[EBX+DICT.Size] STC JECXZ .90: ; End of table. CMP ECX,EDX JB .30: MOV ESI,[EBX+DICT.Ptr] MOV EDI,ESP MOV ECX,EDX REPE CMPSB JNE .30: MOV EAX,[EBX+DICT.Data] MOV [%ReturnEAX],EAX .90:EndProcedure DictLookupObj
Rather than sequentional searching of DICT tables, procedure DictLookupIiSetup defines
arrays of dwords, each array in its own section.
Array [DictIM04A]
contains NULL-padded mnemonics which are 1..4 characters long; array
[DictIH04]
contains pointers to their handlers.
Similary arrays [DictIM08A]+[DictIM08B], [DictIH08]
contain menmonics 5..8 characters long
and their handlers, array [DictIM12A]+[DictIM12B]+[DictIM12C]
mnemonics 9..12 characters long etc.
This allows to lookup the mnemonic with one machine instruction REPNE SCASD
which is faster than hash tables or dict tables used in search for other static dictionary resources.
For the best performance should enumeration of each family start with the most frequently used instructions.
; Lookable arrays are created at assembly-time: %DictIN04 %SETA 0 ; Number of instructions with mnemonics size 1.. 4 characters. %DictIN08 %SETA 0 ; Number of instructions with mnemonics size 5.. 8 characters. %DictIN12 %SETA 0 ; Number of instructions with mnemonics size 9..12 characters. %DictIN16 %SETA 0 ; Number of instructions with mnemonics size 13..16 characters. %DictIN20 %SETA 0 ; Number of instructions with mnemonics size 17..20 characters. %MaxMnemoSize %SETA 20 ; Longer instruction mnemonics are not supported. [.data] ; Predeclaration of used sections and labels at the beginning of each sections. [DictIH04] DictIH04: [DictIH08] DictIH08: [DictIH12] DictIH12: [DictIH16] DictIH16: [DictIH20] DictIH20: [DictIM04A] DictIM04A: [DictIM08A] DictIM08A: [DictIM08B] DictIM08B: [DictIM12A] DictIM12A: [DictIM12B] DictIM12B: [DictIM12C] DictIM12C: [DictIM16A] DictIM16A: [DictIM16B] DictIM16B: [DictIM16C] DictIM16C: [DictIM16D] DictIM16D: [DictIM20A] DictIM20A: [DictIM20B] DictIM20B: [DictIM20C] DictIM20C: [DictIM20D] DictIM20D: [DictIM20E] DictIM20E: cat %FOR %IiCategoryList ; All categories of machine instructions (g,s,t, etc). %List %SET2 %%Ii%cat[]List ; %IigList, %IizList etc. mnemo %FOR %List ; MOV, POP, PUSH etc. ; According to the number of characters in mnemonic name, each instruction will be tossed to sections. %size %SETS %mnemo s04 %IF %size <= 4 ;> %DictIN04 %SETA %DictIN04 + 1 ; Update number of instructions in this section. [DictIM04A] DD "%mnemo" ; NULL-padded mnemonic. [DictIH04] DD Ii%cat%mnemo:: ; Pointer to the instruction handler. %ENDIF s04 s08 %IF %size <=8 && %size > 4 %DictIN08 %SETA %DictIN08 + 1 [DictIM08A] DD "%mnemo[1..4]" [DictIM08B] DD "%mnemo[5..8]" [DictIH08] DD Ii%cat%mnemo:: %ENDIF s08 s12 %IF %size <=12 && %size > 8 %DictIN12 %SETA %DictIN12 + 1 [DictIM12A] DD "%mnemo[1..4]" [DictIM12B] DD "%mnemo[5..8]" [DictIM12C] DD "%mnemo[9..12]" [DictIH12] DD Ii%cat%mnemo:: %ENDIF s12 s16 %IF %size <=16 && %size > 12 %DictIN16 %SETA %DictIN16 + 1 [DictIM16A] DD "%mnemo[1..4]" [DictIM16B] DD "%mnemo[5..8]" [DictIM16C] DD "%mnemo[9..12]" [DictIM16D] DD "%mnemo[13..16]" [DictIH16] DD Ii%cat%mnemo:: %ENDIF s16 s20 %IF %size <=20 && %size > 16 %DictIN20 %SETA %DictIN20 + 1 [DictIM20A] DD "%mnemo[1..4]" [DictIM20B] DD "%mnemo[5..8]" [DictIM20C] DD "%mnemo[9..12]" [DictIM20D] DD "%mnemo[13..16]" [DictIM20E] DD "%mnemo[17..20]" [DictIH20] DD Ii%cat%mnemo:: %ENDIF s20 %IF %size >%MaxMnemoSize %ERROR Mnemonic %mnemo is longer than %MaxMnemoSize characters. Revise DictLookupIi. %ENDIF %ENDFOR mnemo %ENDFOR cat ; The actual search is performed at run-time. [.text]
ProcedureDictLookupIi performs case-insensitive search for the input mnemonic and returns pointer to the corresponsing instruction handler procedure.
Rather than sequentional searching of DICT tables, this procedure uses arrays of dwords, each array in its own section.
DictLookupIi Procedure MnemoPtr, MnemoSize MNEMO LocalVar Size=%MaxMnemoSize ; Room for a mnemonics converted to uppercase. Dict12 LocalVar Dict16 LocalVar Dict20 LocalVar DictIMA LocalVar LEA EDI,[%MNEMO] MOV ECX,%MaxMnemoSize/4 XOR EAX,EAX REP STOSD ; Initialize the room with NULL. MOV ECX,[%MnemoSize] MOV ESI,[%MnemoPtr] LEA EDI,[%MNEMO] CMP ECX,%MaxMnemoSize JA .NotFound: TEST ECX JZ .NotFound: .L: LODSB CMP AL,'a' JB .S: CMP AL,'z' JA .S: AND AL,~('A'^'a') ; Convert 'a'..'z' to 'A'..'Z'. .S: STOSB DEC ECX JNZ .L: MOV ECX,[%MnemoSize] LEA ESI,[%MNEMO] ADD ECX,3 AND ECX,~3 ; Round up the mnemonic size to a multiple of 4. Dispatch ECX,4,8,12,16,20 ; Toss by the rounded mnemonic maximal size. JMP .NotFound: .4: ; Mnemonic has 1..4 characters. LODSD MOV EDI,DictIM04A: MOV ECX,%DictIN04 ; Number of such instructions. REPNE SCASD JNE .NotFound: LEA ESI,[DictIH04+EDI-4] ; Load handler address from array [DictIH04]. LEA ECX,[DictIM04A] SUB ESI,ECX LODSD JMP .Found: .8: ; Mnemonic has 5..8 characters. LODSD XCHG EDX,EAX ; Load chars 1..4 to EDX. LODSD XCHG EBX,EAX ; Load chars 5..8 to EBX. MOV EDI,DictIM08A: MOV [%DictIMA],EDI XCHG EAX,EDX ; Chars 1..4 to EAX. MOV ECX,%DictIN08 ; Number of such instructions. .8N:REPNE SCASD JNE .NotFound: LEA ESI,[DictIM08B+EDI-4] SUB ESI,[%DictIMA] CMP EBX,[ESI] JNE .8N: LEA ESI,[DictIH08+EDI-4] SUB ESI,[%DictIMA] LODSD JMP .Found: .12:; Mnemonic has 9..12 characters. LODSD XCHG EDX,EAX ; Load chars 1..4 to EDX. LODSD XCHG EBX,EAX ; Load chars 5..8 to EBX. LODSD MOV [%Dict12],EAX ; Load chars 9..12 to [%Dict12]. MOV EDI,DictIM12A: MOV [%DictIMA],EDI XCHG EAX,EDX ; Load chars 1..4 to EAX. MOV ECX,%DictIN12 ; Number of such instructions. .12N:REPNE SCASD JNE .NotFound: LEA ESI,[DictIM12B+EDI-4] SUB ESI,[%DictIMA] CMP EBX,[ESI] JNE .12N: LEA ESI,[DictIM12C+EDI-4] SUB ESI,[%DictIMA] MOV EDX,[%Dict12] CMP EDX,[ESI] JNE .12N: LEA ESI,[DictIH12+EDI-4] SUB ESI,[%DictIMA] LODSD JMP .Found: .16:; Mnemonic has 13..16 characters. LODSD XCHG EDX,EAX ; Load chars 1..4 to EDX. LODSD XCHG EBX,EAX ; Load chars 5..8 to EBX. LODSD MOV [%Dict12],EAX ; Load chars 9..12 to [%Dict12]. LODSD MOV [%Dict16],EAX ; Load chars 12..16 to [%Dict16]. MOV EDI,DictIM16A: MOV [%DictIMA],EDI XCHG EAX,EDX ; Load chars 1..4 to EAX. MOV ECX,%DictIN16 ; Number of such instructions. .16N:REPNE SCASD JNE .NotFound: LEA ESI,[DictIM16B+EDI-4] SUB ESI,[%DictIMA] CMP EBX,[ESI] JNE .16N: LEA ESI,[DictIM16C+EDI-4] SUB ESI,[%DictIMA] MOV EDX,[%Dict12] CMP EDX,[ESI] JNE .16N: LEA ESI,[DictIM16D+EDI-4] SUB ESI,[%DictIMA] MOV EDX,[%Dict16] CMP EDX,[ESI] JNE .16N: LEA ESI,[DictIH16+EDI-4] SUB ESI,[%DictIMA] LODSD JMP .Found: .20:; Mnemonic has 17..20 characters. LODSD XCHG EDX,EAX ; Load chars 1..4 to EDX. LODSD XCHG EBX,EAX ; Load chars 5..8 to EBX. LODSD MOV [%Dict12],EAX ; Load chars 9..12 to [%Dict12]. LODSD MOV [%Dict16],EAX ; Load chars 12..16 to [%Dict16]. LODSD MOV [%Dict20],EAX ; Load chars 17..20 to [%Dict20]. MOV EDI,DictIM20A: MOV [%DictIMA],EDI XCHG EAX,EDX ; Load chars 1..4 to EAX. MOV ECX,%DictIN20 ; Number of such instructions. .20N:REPNE SCASD JNE .NotFound: LEA ESI,[DictIM20B+EDI-4] SUB ESI,[%DictIMA] CMP EBX,[ESI] JNE .20N: LEA ESI,[DictIM20C+EDI-4] SUB ESI,[%DictIMA] MOV EDX,[%Dict12] CMP EDX,[ESI] JNE .20N: LEA ESI,[DictIM20D+EDI-4] SUB ESI,[%DictIMA] MOV EDX,[%Dict16] CMP EDX,[ESI] JNE .20N: LEA ESI,[DictIM20E+EDI-4] SUB ESI,[%DictIMA] MOV EDX,[%Dict20] CMP EDX,[ESI] JNE .20N: LEA ESI,[DictIH20+EDI-4] SUB ESI,[%DictIMA] LODSD JMP .Found: .NotFound: XOR EAX,EAX STC .Found: MOV [%ReturnEAX],EAX EndProcedure DictLookupIi
[ESI+DICT.Ptr]
, size is [ESI+DICT.Size]
.DictSearchByData Procedure Table, Data SUB EAX,EAX MOV EBX,[%Table] MOV EDX,[%Data] MOV [%ReturnESI],EAX SUB EBX,SIZE#DICT .30: ADD EBX,SIZE#DICT MOV ECX,[EBX+DICT.Size] STC JECXZ .90 ; If end of table was found. CMP EDX,[EBX+DICT.Data] JNE .30: MOV [%ReturnESI],EBX .90:EndProcedure DictSearchByData
ENDPROGRAM dict