* fixes to the x86 instruction flags tracking attributes:

* AAA and AAS also read flags (AF)
  * CMC reads and writes flags (it inverts CF)
  * CMPSx and SCASx write flags
  * CMPSx, SCASx, LODSx, STOSx, MOVSx read the direction flag
  * NOT doesn't affect flags
  * REP isn't affected by and doesn't affect flags
  * REPE/REPNE/REPZ/REPNZ/REPC/REPNC don't write flags, only read them
  * ROL and ROR don't read flags
  * SAL doesn't read flags
  * SHLD and SHRD don't read flags

git-svn-id: trunk@35849 -
This commit is contained in:
nickysn 2017-04-19 15:42:50 +00:00
parent 7ee0c07b8d
commit 189e49998c
5 changed files with 121 additions and 118 deletions

View File

@ -1,10 +1,10 @@
{ don't edit, this file is generated from x86ins.dat }
(
(Ch: (Ch_None, Ch_None, Ch_None)),
(Ch: (Ch_MEAX, Ch_RWFlags, Ch_None)),
(Ch: (Ch_MEAX, Ch_WFlags, Ch_None)),
(Ch: (Ch_MEAX, Ch_WFlags, Ch_None)),
(Ch: (Ch_MEAX, Ch_WFlags, Ch_None)),
(Ch: (Ch_MEAX, Ch_WFlags, Ch_None)),
(Ch: (Ch_MEAX, Ch_RWFlags, Ch_None)),
(Ch: (Ch_Mop2, Ch_Rop1, Ch_RWFlags)),
(Ch: (Ch_Mop2, Ch_Rop1, Ch_WFlags)),
(Ch: (Ch_Mop2, Ch_Rop1, Ch_WFlags)),
@ -24,11 +24,11 @@
(Ch: (Ch_CDirFlag, Ch_None, Ch_None)),
(Ch: (Ch_WFlags, Ch_None, Ch_None)),
(Ch: (Ch_None, Ch_None, Ch_None)),
(Ch: (Ch_WFlags, Ch_None, Ch_None)),
(Ch: (Ch_RWFlags, Ch_None, Ch_None)),
(Ch: (Ch_ROp1, Ch_ROp2, Ch_WFlags)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_WFlags, Ch_RDirFlag)),
(Ch: (Ch_All, Ch_WFlags, Ch_RDirFlag)),
(Ch: (Ch_All, Ch_WFlags, Ch_RDirFlag)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
@ -181,9 +181,9 @@
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_None, Ch_None, Ch_None)),
(Ch: (Ch_WEAX, Ch_RWESI, Ch_None)),
(Ch: (Ch_WEAX, Ch_RWESI, Ch_None)),
(Ch: (Ch_WEAX, Ch_RWESI, Ch_None)),
(Ch: (Ch_WEAX, Ch_RWESI, Ch_RDirFlag)),
(Ch: (Ch_WEAX, Ch_RWESI, Ch_RDirFlag)),
(Ch: (Ch_WEAX, Ch_RWESI, Ch_RDirFlag)),
(Ch: (Ch_RWECX, Ch_None, Ch_None)),
(Ch: (Ch_RWECX, Ch_RFlags, Ch_None)),
(Ch: (Ch_RWECX, Ch_RFlags, Ch_None)),
@ -196,16 +196,16 @@
(Ch: (Ch_Wop2, Ch_Rop1, Ch_None)),
(Ch: (Ch_Rop1, Ch_Wop2, Ch_None)),
(Ch: (Ch_Rop1, Ch_Wop2, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_RDirFlag, Ch_None)),
(Ch: (Ch_All, Ch_RDirFlag, Ch_None)),
(Ch: (Ch_All, Ch_RDirFlag, Ch_None)),
(Ch: (Ch_Wop2, Ch_Rop1, Ch_None)),
(Ch: (Ch_Wop2, Ch_Rop1, Ch_None)),
(Ch: (Ch_RWEAX, Ch_WEDX, Ch_WFlags)),
(Ch: (Ch_None, Ch_None, Ch_None)),
(Ch: (Ch_Mop1, Ch_None, Ch_None)),
(Ch: (Ch_None, Ch_None, Ch_None)),
(Ch: (Ch_Mop1, Ch_WFlags, Ch_None)),
(Ch: (Ch_Mop1, Ch_None, Ch_None)),
(Ch: (Ch_Mop2, Ch_Rop1, Ch_WFlags)),
(Ch: (Ch_Rop1, Ch_Rop2, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
@ -309,27 +309,27 @@
(Ch: (Ch_WEAX, Ch_WEDX, Ch_None)),
(Ch: (Ch_WEAX, Ch_WEDX, Ch_None)),
(Ch: (Ch_WEAX, Ch_WEDX, Ch_None)),
(Ch: (Ch_RWECX, Ch_RWFlags, Ch_None)),
(Ch: (Ch_RWECX, Ch_RWFlags, Ch_None)),
(Ch: (Ch_RWECX, Ch_RWFlags, Ch_None)),
(Ch: (Ch_RWECX, Ch_RWFLAGS, Ch_None)),
(Ch: (Ch_RWECX, Ch_RWFLAGS, Ch_None)),
(Ch: (Ch_RWECX, Ch_None, Ch_None)),
(Ch: (Ch_RWECX, Ch_RFlags, Ch_None)),
(Ch: (Ch_RWECX, Ch_RFlags, Ch_None)),
(Ch: (Ch_RWECX, Ch_RFLAGS, Ch_None)),
(Ch: (Ch_RWECX, Ch_RFLAGS, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_Mop2, Ch_Rop1, Ch_RWFlags)),
(Ch: (Ch_Mop2, Ch_Rop1, Ch_RWFlags)),
(Ch: (Ch_Mop2, Ch_Rop1, Ch_WFlags)),
(Ch: (Ch_Mop2, Ch_Rop1, Ch_WFlags)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_WFlags, Ch_REAX, Ch_None)),
(Ch: (Ch_Mop2, Ch_Rop1, Ch_RWFlags)),
(Ch: (Ch_Mop2, Ch_Rop1, Ch_WFlags)),
(Ch: (Ch_WEAX, Ch_RFLAGS, Ch_None)),
(Ch: (Ch_Mop2, Ch_Rop1, Ch_WFlags)),
(Ch: (Ch_Mop2, Ch_Rop1, Ch_RWFlags)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_WFlags, Ch_RDirFlag)),
(Ch: (Ch_All, Ch_WFlags, Ch_RDirFlag)),
(Ch: (Ch_All, Ch_WFlags, Ch_RDirFlag)),
(Ch: (Ch_None, Ch_None, Ch_None)),
(Ch: (Ch_None, Ch_None, Ch_None)),
(Ch: (Ch_None, Ch_None, Ch_None)),
@ -338,9 +338,9 @@
(Ch: (Ch_None, Ch_None, Ch_None)),
(Ch: (Ch_Wop1, Ch_None, Ch_None)),
(Ch: (Ch_Mop2, Ch_Rop1, Ch_WFlags)),
(Ch: (Ch_MOp3, Ch_RWFlags, Ch_Rop2)),
(Ch: (Ch_MOp3, Ch_WFlags, Ch_Rop2)),
(Ch: (Ch_Mop2, Ch_Rop1, Ch_WFlags)),
(Ch: (Ch_MOp3, Ch_RWFlags, Ch_Rop2)),
(Ch: (Ch_MOp3, Ch_WFlags, Ch_Rop2)),
(Ch: (Ch_Wop1, Ch_None, Ch_None)),
(Ch: (Ch_Wop1, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),

View File

@ -1,10 +1,10 @@
{ don't edit, this file is generated from x86ins.dat }
(
(Ch: (Ch_None, Ch_None, Ch_None)),
(Ch: (Ch_MEAX, Ch_RWFlags, Ch_None)),
(Ch: (Ch_MEAX, Ch_WFlags, Ch_None)),
(Ch: (Ch_MEAX, Ch_WFlags, Ch_None)),
(Ch: (Ch_MEAX, Ch_WFlags, Ch_None)),
(Ch: (Ch_MEAX, Ch_WFlags, Ch_None)),
(Ch: (Ch_MEAX, Ch_RWFlags, Ch_None)),
(Ch: (Ch_Mop2, Ch_Rop1, Ch_RWFlags)),
(Ch: (Ch_Mop2, Ch_Rop1, Ch_WFlags)),
(Ch: (Ch_Mop2, Ch_Rop1, Ch_WFlags)),
@ -24,11 +24,11 @@
(Ch: (Ch_CDirFlag, Ch_None, Ch_None)),
(Ch: (Ch_WFlags, Ch_None, Ch_None)),
(Ch: (Ch_None, Ch_None, Ch_None)),
(Ch: (Ch_WFlags, Ch_None, Ch_None)),
(Ch: (Ch_RWFlags, Ch_None, Ch_None)),
(Ch: (Ch_ROp1, Ch_ROp2, Ch_WFlags)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_WFlags, Ch_RDirFlag)),
(Ch: (Ch_All, Ch_WFlags, Ch_RDirFlag)),
(Ch: (Ch_All, Ch_WFlags, Ch_RDirFlag)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
@ -181,9 +181,9 @@
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_None, Ch_None, Ch_None)),
(Ch: (Ch_WEAX, Ch_RWESI, Ch_None)),
(Ch: (Ch_WEAX, Ch_RWESI, Ch_None)),
(Ch: (Ch_WEAX, Ch_RWESI, Ch_None)),
(Ch: (Ch_WEAX, Ch_RWESI, Ch_RDirFlag)),
(Ch: (Ch_WEAX, Ch_RWESI, Ch_RDirFlag)),
(Ch: (Ch_WEAX, Ch_RWESI, Ch_RDirFlag)),
(Ch: (Ch_RWECX, Ch_None, Ch_None)),
(Ch: (Ch_RWECX, Ch_RFlags, Ch_None)),
(Ch: (Ch_RWECX, Ch_RFlags, Ch_None)),
@ -196,16 +196,16 @@
(Ch: (Ch_Wop2, Ch_Rop1, Ch_None)),
(Ch: (Ch_Rop1, Ch_Wop2, Ch_None)),
(Ch: (Ch_Rop1, Ch_Wop2, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_RDirFlag, Ch_None)),
(Ch: (Ch_All, Ch_RDirFlag, Ch_None)),
(Ch: (Ch_All, Ch_RDirFlag, Ch_None)),
(Ch: (Ch_Wop2, Ch_Rop1, Ch_None)),
(Ch: (Ch_Wop2, Ch_Rop1, Ch_None)),
(Ch: (Ch_RWEAX, Ch_WEDX, Ch_WFlags)),
(Ch: (Ch_None, Ch_None, Ch_None)),
(Ch: (Ch_Mop1, Ch_None, Ch_None)),
(Ch: (Ch_None, Ch_None, Ch_None)),
(Ch: (Ch_Mop1, Ch_WFlags, Ch_None)),
(Ch: (Ch_Mop1, Ch_None, Ch_None)),
(Ch: (Ch_Mop2, Ch_Rop1, Ch_WFlags)),
(Ch: (Ch_Rop1, Ch_Rop2, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
@ -309,27 +309,27 @@
(Ch: (Ch_WEAX, Ch_WEDX, Ch_None)),
(Ch: (Ch_WEAX, Ch_WEDX, Ch_None)),
(Ch: (Ch_WEAX, Ch_WEDX, Ch_None)),
(Ch: (Ch_RWECX, Ch_RWFlags, Ch_None)),
(Ch: (Ch_RWECX, Ch_RWFlags, Ch_None)),
(Ch: (Ch_RWECX, Ch_RWFlags, Ch_None)),
(Ch: (Ch_RWECX, Ch_RWFLAGS, Ch_None)),
(Ch: (Ch_RWECX, Ch_RWFLAGS, Ch_None)),
(Ch: (Ch_RWECX, Ch_None, Ch_None)),
(Ch: (Ch_RWECX, Ch_RFlags, Ch_None)),
(Ch: (Ch_RWECX, Ch_RFlags, Ch_None)),
(Ch: (Ch_RWECX, Ch_RFLAGS, Ch_None)),
(Ch: (Ch_RWECX, Ch_RFLAGS, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_Mop2, Ch_Rop1, Ch_RWFlags)),
(Ch: (Ch_Mop2, Ch_Rop1, Ch_RWFlags)),
(Ch: (Ch_Mop2, Ch_Rop1, Ch_WFlags)),
(Ch: (Ch_Mop2, Ch_Rop1, Ch_WFlags)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_WFlags, Ch_REAX, Ch_None)),
(Ch: (Ch_Mop2, Ch_Rop1, Ch_RWFlags)),
(Ch: (Ch_Mop2, Ch_Rop1, Ch_WFlags)),
(Ch: (Ch_WEAX, Ch_RFLAGS, Ch_None)),
(Ch: (Ch_Mop2, Ch_Rop1, Ch_WFlags)),
(Ch: (Ch_Mop2, Ch_Rop1, Ch_RWFlags)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_WFlags, Ch_RDirFlag)),
(Ch: (Ch_All, Ch_WFlags, Ch_RDirFlag)),
(Ch: (Ch_All, Ch_WFlags, Ch_RDirFlag)),
(Ch: (Ch_None, Ch_None, Ch_None)),
(Ch: (Ch_None, Ch_None, Ch_None)),
(Ch: (Ch_None, Ch_None, Ch_None)),
@ -338,9 +338,9 @@
(Ch: (Ch_None, Ch_None, Ch_None)),
(Ch: (Ch_Wop1, Ch_None, Ch_None)),
(Ch: (Ch_Mop2, Ch_Rop1, Ch_WFlags)),
(Ch: (Ch_MOp3, Ch_RWFlags, Ch_Rop2)),
(Ch: (Ch_MOp3, Ch_WFlags, Ch_Rop2)),
(Ch: (Ch_Mop2, Ch_Rop1, Ch_WFlags)),
(Ch: (Ch_MOp3, Ch_RWFlags, Ch_Rop2)),
(Ch: (Ch_MOp3, Ch_WFlags, Ch_Rop2)),
(Ch: (Ch_Wop1, Ch_None, Ch_None)),
(Ch: (Ch_Wop1, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
@ -972,8 +972,8 @@
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_Mop2, Ch_Rop1, Ch_None)),
(Ch: (Ch_RWECX, Ch_RWFlags, Ch_None)),
(Ch: (Ch_RWECX, Ch_RWFlags, Ch_None)),
(Ch: (Ch_RWECX, Ch_RFlags, Ch_None)),
(Ch: (Ch_RWECX, Ch_RFlags, Ch_None)),
(Ch: (Ch_Mop1, Ch_RWEAX, Ch_None)),
(Ch: (Ch_Mop1, Ch_RWEAX, Ch_None)),
(Ch: (Ch_Mop2, Ch_Rop1, Ch_None)),

View File

@ -213,7 +213,7 @@ interface
this changed content afterwards (add/sub/..., but e.g. not rep
or movsd)}
Ch_MEAX, Ch_MECX, Ch_MEDX, Ch_MEBX, Ch_MESP, Ch_MEBP, Ch_MESI, Ch_MEDI,
Ch_CDirFlag {clear direction flag}, Ch_SDirFlag {set dir flag},
Ch_CDirFlag {clear direction flag}, Ch_SDirFlag {set dir flag},Ch_RDirFlag {read direction flag},
Ch_RFlags, Ch_WFlags, Ch_RWFlags, Ch_FPU,
Ch_Rop1, Ch_Wop1, Ch_RWop1,Ch_Mop1,
Ch_Rop2, Ch_Wop2, Ch_RWop2,Ch_Mop2,

View File

@ -16,7 +16,7 @@
void void none
[AAA]
(Ch_MEAX, Ch_WFlags, Ch_None)
(Ch_MEAX, Ch_RWFlags, Ch_None)
void \1\x37 8086,NOX86_64
[AAD,aadX]
@ -30,7 +30,7 @@ void \2\xD4\x0A 8086,NOX86_64
imm \1\xD4\24 8086,SB,NOX86_64
[AAS]
(Ch_MEAX, Ch_WFlags, Ch_None)
(Ch_MEAX, Ch_RWFlags, Ch_None)
void \1\x3F 8086,NOX86_64
[ADC,adcX]
@ -170,7 +170,7 @@ void \1\xFA 8086
void \2\x0F\x06 286,PRIV
[CMC]
(Ch_WFlags, Ch_None, Ch_None)
(Ch_RWFlags, Ch_None, Ch_None)
void \1\xF5 8086
[CMP,cmpX]
@ -193,16 +193,16 @@ mem,imm16 \324\1\x81\207\31 8086,SW
mem,imm8 \1\x80\207\21 8086,SB
[CMPSB]
(Ch_All, Ch_None, Ch_None)
(Ch_All, Ch_WFlags, Ch_RDirFlag)
void \332\1\xA6 8086
[CMPSD,cmpsl]
(Ch_All, Ch_None, Ch_None)
(Ch_All, Ch_WFlags, Ch_RDirFlag)
void \332\325\1\xA7 386
xmmreg,xmmrm,imm \334\2\x0F\xC2\110\26 WILLAMETTE,SSE2,SM2,SB,AR2
[CMPSW]
(Ch_All, Ch_None, Ch_None)
(Ch_All, Ch_WFlags, Ch_RDirFlag)
void \332\324\1\xA7 8086
[CMPXCHG,cmpxchgX]
@ -983,15 +983,15 @@ void \2\x0F\x05 286,UNDOC
void \1\xF0 8086,PRE
[LODSB]
(Ch_WEAX, Ch_RWESI, Ch_None)
(Ch_WEAX, Ch_RWESI, Ch_RDirFlag)
void \1\xAC 8086
[LODSD,lodsl]
(Ch_WEAX, Ch_RWESI, Ch_None)
(Ch_WEAX, Ch_RWESI, Ch_RDirFlag)
void \325\1\xAD 386
[LODSW]
(Ch_WEAX, Ch_RWESI, Ch_None)
(Ch_WEAX, Ch_RWESI, Ch_RDirFlag)
void \324\1\xAD 8086
[LOOP]
@ -1104,22 +1104,22 @@ xmmreg,reg64 \361\326\2\x0F\x6E\110 WILLAMETTE,SSE2,X86_64
reg64,xmmreg \361\326\2\x0F\x7E\101 WILLAMETTE,SSE2,X86_64
[MOVSB]
(Ch_All, Ch_None, Ch_None)
(Ch_All, Ch_RDirFlag, Ch_None)
void \1\xA4 8086
[MOVSD,movsl]
; Ch_All isn't correct for the sse move, but how can it be solved? (FK)
(Ch_All, Ch_None, Ch_None)
; Ch_All and Ch_RDirFlag aren't correct for the sse move, but how can it be solved? (FK)
(Ch_All, Ch_RDirFlag, Ch_None)
void \325\1\xA5 386
xmmreg,xmmrm \334\2\x0F\x10\110 WILLAMETTE,SSE2
xmmrm,xmmreg \334\2\x0F\x11\101 WILLAMETTE,SSE2
[MOVSQ]
(Ch_All, Ch_None, Ch_None)
(Ch_All, Ch_RDirFlag, Ch_None)
void \326\1\xA5 X86_64
[MOVSW]
(Ch_All, Ch_None, Ch_None)
(Ch_All, Ch_RDirFlag, Ch_None)
void \324\1\xA5 8086
[MOVSX,movsY]
@ -1153,7 +1153,7 @@ rm8 \1\xF6\203 8086
void \1\x90 8086
[NOT,notX]
(Ch_Mop1, Ch_WFlags, Ch_None)
(Ch_Mop1, Ch_None, Ch_None)
rm16|32|64 \320\1\xF7\202 8086
rm8 \1\xF6\202 8086
@ -1686,23 +1686,23 @@ void \2\x0F\x33 P6
void \2\x0F\x31 PENT
[REP]
(Ch_RWECX, Ch_RWFlags, Ch_None)
(Ch_RWECX, Ch_None, Ch_None)
void \1\xF3 8086,PRE
[REPE]
(Ch_RWECX, Ch_RWFlags, Ch_None)
(Ch_RWECX, Ch_RFlags, Ch_None)
void \1\xF3 8086,PRE
[REPNE]
(Ch_RWECX, Ch_RWFlags, Ch_None)
(Ch_RWECX, Ch_RFlags, Ch_None)
void \1\xF2 8086,PRE
[REPNZ]
(Ch_RWECX, Ch_RWFLAGS, Ch_None)
(Ch_RWECX, Ch_RFLAGS, Ch_None)
void \1\xF2 8086,PRE
[REPZ]
(Ch_RWECX, Ch_RWFLAGS, Ch_None)
(Ch_RWECX, Ch_RFLAGS, Ch_None)
void \1\xF3 8086,PRE
[RET]
@ -1721,7 +1721,7 @@ void \1\xC3 8086
imm \1\xC2\30 8086,SW
[ROL,rolX]
(Ch_Mop2, Ch_Rop1, Ch_RWFlags)
(Ch_Mop2, Ch_Rop1, Ch_WFlags)
rm16|32|64,unity \320\1\xD1\200 8086
rm16|32|64,reg_cl \320\1\xD3\200 8086
rm16|32|64,imm \320\1\xC1\200\25 186,SB
@ -1730,7 +1730,7 @@ rm8,reg_cl \1\xD2\200 8086
rm8,imm \1\xC0\200\25 186,SB
[ROR,rorX]
(Ch_Mop2, Ch_Rop1, Ch_RWFlags)
(Ch_Mop2, Ch_Rop1, Ch_WFlags)
rm16|32|64,unity \320\1\xD1\201 8086
rm16|32|64,reg_cl \320\1\xD3\201 8086
rm16|32|64,imm \320\1\xC1\201\25 186,SB
@ -1756,7 +1756,7 @@ void \2\x0F\xAA PENT,SMM
void \1\x9E 8086
[SAL,salX]
(Ch_Mop2, Ch_Rop1, Ch_RWFlags)
(Ch_Mop2, Ch_Rop1, Ch_WFlags)
rm16|32|64,unity \320\1\xD1\204 8086,ND
rm16|32|64,reg_cl \320\1\xD3\204 8086,ND
rm16|32|64,imm \320\1\xC1\204\25 186,ND,SB
@ -1794,19 +1794,19 @@ reg_al,imm \1\x1C\21 8086,SB
rm8,imm \1\x80\203\21 8086,SB
[SCASB]
(Ch_All, Ch_None, Ch_None)
(Ch_All, Ch_WFlags, Ch_RDirFlag)
void \332\1\xAE 8086
[SCASD,scasl]
(Ch_All, Ch_None, Ch_None)
(Ch_All, Ch_WFlags, Ch_RDirFlag)
void \332\325\1\xAF 386
[SCASQ]
(Ch_All, Ch_None, Ch_None)
(Ch_All, Ch_WFlags, Ch_RDirFlag)
void \332\326\1\xAF X86_64
[SCASW]
(Ch_All, Ch_None, Ch_None)
(Ch_All, Ch_WFlags, Ch_RDirFlag)
void \332\324\1\xAF 8086
[SEGCS,cs]
@ -1847,7 +1847,7 @@ rm8,reg_cl \1\xD2\204 8086
rm8,imm \1\xC0\204\25 186,SB
[SHLD,shldX]
(Ch_MOp3, Ch_RWFlags, Ch_Rop2)
(Ch_MOp3, Ch_WFlags, Ch_Rop2)
rm16|32|64,reg16|32|64,imm \321\2\x0F\xA4\101\26 386,SM2,SB,AR2
rm16|32|64,reg16|32|64,reg_cl \321\2\x0F\xA5\101 386,SM
@ -1861,7 +1861,7 @@ rm8,reg_cl \1\xD2\205 8086
rm8,imm \1\xC0\205\25 186,SB
[SHRD,shrdX]
(Ch_MOp3, Ch_RWFlags, Ch_Rop2)
(Ch_MOp3, Ch_WFlags, Ch_Rop2)
rm16|32|64,reg16|32|64,imm \321\2\x0F\xAC\101\26 386,SM2,SB,AR2
rm16|32|64,reg16|32|64,reg_cl \321\2\x0F\xAD\101 386,SM
@ -1903,14 +1903,17 @@ void \1\xFD 8086
void \1\xFB 8086
[STOSB]
; todo: also needs Ch_CDirFlag
(Ch_REAX, Ch_WMemEDI, Ch_RWEDI)
void \1\xAA 8086
[STOSD,stosl]
; todo: also needs Ch_CDirFlag
(Ch_REAX, Ch_WMemEDI, Ch_RWEDI)
void \325\1\xAB 386
[STOSW]
; todo: also needs Ch_CDirFlag
(Ch_REAX, Ch_WMemEDI, Ch_RWEDI)
void \324\1\xAB 8086
@ -3457,15 +3460,15 @@ void \3\x0F\x01\xf9 SSE4,SM
;*******************************************************************************
;*******************************************************************************
[STOSQ]
(Ch_RRAX, Ch_WMemEDI, Ch_RWRDI)
(Ch_RRAX, Ch_WMemEDI, Ch_RWRDI, Ch_RDirFlag)
void \326\1\xAB X86_64
[LODSQ]
(Ch_WRAX, Ch_RWRSI, Ch_None)
(Ch_WRAX, Ch_RWRSI, Ch_RDirFlag)
void \326\1\xAD X86_64
[CMPSQ]
(Ch_All, Ch_None, Ch_None)
(Ch_All, Ch_WFlags, Ch_RDirFlag)
void \326\1\xA7 X86_64
;*******************************************************************************
@ -5065,11 +5068,11 @@ rm8,imm \2\x0F\x1E\200\25 NEC,SB
rm16,imm \2\x0F\x1F\200\25 NEC,SW,IMM4,16BITONLY
[REPC]
(Ch_RWECX, Ch_RWFlags, Ch_None)
(Ch_RWECX, Ch_RFlags, Ch_None)
void \1\x65 NEC,PRE,16BITONLY
[REPNC]
(Ch_RWECX, Ch_RWFlags, Ch_None)
(Ch_RWECX, Ch_RFlags, Ch_None)
void \1\x64 NEC,PRE,16BITONLY
[ROL4]

View File

@ -18,11 +18,11 @@
(Ch: (Ch_CDirFlag, Ch_None, Ch_None)),
(Ch: (Ch_WFlags, Ch_None, Ch_None)),
(Ch: (Ch_None, Ch_None, Ch_None)),
(Ch: (Ch_WFlags, Ch_None, Ch_None)),
(Ch: (Ch_RWFlags, Ch_None, Ch_None)),
(Ch: (Ch_ROp1, Ch_ROp2, Ch_WFlags)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_WFlags, Ch_RDirFlag)),
(Ch: (Ch_All, Ch_WFlags, Ch_RDirFlag)),
(Ch: (Ch_All, Ch_WFlags, Ch_RDirFlag)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
@ -171,9 +171,9 @@
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_None, Ch_None, Ch_None)),
(Ch: (Ch_WEAX, Ch_RWESI, Ch_None)),
(Ch: (Ch_WEAX, Ch_RWESI, Ch_None)),
(Ch: (Ch_WEAX, Ch_RWESI, Ch_None)),
(Ch: (Ch_WEAX, Ch_RWESI, Ch_RDirFlag)),
(Ch: (Ch_WEAX, Ch_RWESI, Ch_RDirFlag)),
(Ch: (Ch_WEAX, Ch_RWESI, Ch_RDirFlag)),
(Ch: (Ch_RWECX, Ch_None, Ch_None)),
(Ch: (Ch_RWECX, Ch_RFlags, Ch_None)),
(Ch: (Ch_RWECX, Ch_RFlags, Ch_None)),
@ -186,17 +186,17 @@
(Ch: (Ch_Wop2, Ch_Rop1, Ch_None)),
(Ch: (Ch_Rop1, Ch_Wop2, Ch_None)),
(Ch: (Ch_Rop1, Ch_Wop2, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_RDirFlag, Ch_None)),
(Ch: (Ch_All, Ch_RDirFlag, Ch_None)),
(Ch: (Ch_All, Ch_RDirFlag, Ch_None)),
(Ch: (Ch_All, Ch_RDirFlag, Ch_None)),
(Ch: (Ch_Wop2, Ch_Rop1, Ch_None)),
(Ch: (Ch_Wop2, Ch_Rop1, Ch_None)),
(Ch: (Ch_RWEAX, Ch_WEDX, Ch_WFlags)),
(Ch: (Ch_None, Ch_None, Ch_None)),
(Ch: (Ch_Mop1, Ch_None, Ch_None)),
(Ch: (Ch_None, Ch_None, Ch_None)),
(Ch: (Ch_Mop1, Ch_WFlags, Ch_None)),
(Ch: (Ch_Mop1, Ch_None, Ch_None)),
(Ch: (Ch_Mop2, Ch_Rop1, Ch_WFlags)),
(Ch: (Ch_Rop1, Ch_Rop2, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
@ -294,27 +294,27 @@
(Ch: (Ch_WEAX, Ch_WEDX, Ch_None)),
(Ch: (Ch_WEAX, Ch_WEDX, Ch_None)),
(Ch: (Ch_WEAX, Ch_WEDX, Ch_None)),
(Ch: (Ch_RWECX, Ch_RWFlags, Ch_None)),
(Ch: (Ch_RWECX, Ch_RWFlags, Ch_None)),
(Ch: (Ch_RWECX, Ch_RWFlags, Ch_None)),
(Ch: (Ch_RWECX, Ch_RWFLAGS, Ch_None)),
(Ch: (Ch_RWECX, Ch_RWFLAGS, Ch_None)),
(Ch: (Ch_RWECX, Ch_None, Ch_None)),
(Ch: (Ch_RWECX, Ch_RFlags, Ch_None)),
(Ch: (Ch_RWECX, Ch_RFlags, Ch_None)),
(Ch: (Ch_RWECX, Ch_RFLAGS, Ch_None)),
(Ch: (Ch_RWECX, Ch_RFLAGS, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_Mop2, Ch_Rop1, Ch_RWFlags)),
(Ch: (Ch_Mop2, Ch_Rop1, Ch_RWFlags)),
(Ch: (Ch_Mop2, Ch_Rop1, Ch_WFlags)),
(Ch: (Ch_Mop2, Ch_Rop1, Ch_WFlags)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_WFlags, Ch_REAX, Ch_None)),
(Ch: (Ch_Mop2, Ch_Rop1, Ch_RWFlags)),
(Ch: (Ch_Mop2, Ch_Rop1, Ch_WFlags)),
(Ch: (Ch_Mop2, Ch_Rop1, Ch_WFlags)),
(Ch: (Ch_Mop2, Ch_Rop1, Ch_RWFlags)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_WFlags, Ch_RDirFlag)),
(Ch: (Ch_All, Ch_WFlags, Ch_RDirFlag)),
(Ch: (Ch_All, Ch_WFlags, Ch_RDirFlag)),
(Ch: (Ch_All, Ch_WFlags, Ch_RDirFlag)),
(Ch: (Ch_None, Ch_None, Ch_None)),
(Ch: (Ch_None, Ch_None, Ch_None)),
(Ch: (Ch_None, Ch_None, Ch_None)),
@ -323,9 +323,9 @@
(Ch: (Ch_None, Ch_None, Ch_None)),
(Ch: (Ch_Wop1, Ch_None, Ch_None)),
(Ch: (Ch_Mop2, Ch_Rop1, Ch_WFlags)),
(Ch: (Ch_MOp3, Ch_RWFlags, Ch_Rop2)),
(Ch: (Ch_MOp3, Ch_WFlags, Ch_Rop2)),
(Ch: (Ch_Mop2, Ch_Rop1, Ch_WFlags)),
(Ch: (Ch_MOp3, Ch_RWFlags, Ch_Rop2)),
(Ch: (Ch_MOp3, Ch_WFlags, Ch_Rop2)),
(Ch: (Ch_Wop1, Ch_None, Ch_None)),
(Ch: (Ch_Wop1, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
@ -663,9 +663,9 @@
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_WEAX, Ch_WEDX, Ch_None)),
(Ch: (Ch_RRAX, Ch_WMemEDI, Ch_RWRDI)),
(Ch: (Ch_WRAX, Ch_RWRSI, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_RRAX, Ch_WMemEDI, Ch_RWRDI, Ch_RDirFlag)),
(Ch: (Ch_WRAX, Ch_RWRSI, Ch_RDirFlag)),
(Ch: (Ch_All, Ch_WFlags, Ch_RDirFlag)),
(Ch: (Ch_Wop3, Ch_Rop2, Ch_Rop1)),
(Ch: (Ch_Wop3, Ch_Rop2, Ch_Rop1)),
(Ch: (Ch_Wop3, Ch_Rop2, Ch_Rop1)),