mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-16 12:19:30 +02:00
* 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:
parent
7ee0c07b8d
commit
189e49998c
@ -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)),
|
||||
|
@ -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)),
|
||||
|
@ -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,
|
||||
|
@ -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]
|
||||
|
@ -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)),
|
||||
|
Loading…
Reference in New Issue
Block a user