* Flagged with NOX86_64 instructions/encodings that are invalid in 64-bit mode.

* AESKEYGENASSIST is not ATT-specific name, it is used by Intel-style assemblers as well. Also updated tests/test/taes1.pp to reflect the change.
+ Added SCASQ, resolves #16730 (other opcodes mentioned in that report were added/fixed earlier)

git-svn-id: trunk@17431 -
This commit is contained in:
sergei 2011-05-11 15:50:59 +00:00
parent 9bb0dc6cfe
commit 6739cec2b9
15 changed files with 107 additions and 259 deletions

View File

@ -333,6 +333,7 @@
'sbb', 'sbb',
'scasb', 'scasb',
'scasl', 'scasl',
'scasq',
'scasw', 'scasw',
'cs', 'cs',
'ds', 'ds',

View File

@ -341,6 +341,7 @@ attsufNONE,
attsufNONE, attsufNONE,
attsufNONE, attsufNONE,
attsufNONE, attsufNONE,
attsufNONE,
attsufINT, attsufINT,
attsufINT, attsufINT,
attsufINT, attsufINT,

View File

@ -333,6 +333,7 @@
'sbb', 'sbb',
'scasb', 'scasb',
'scasd', 'scasd',
'scasq',
'scasw', 'scasw',
'segcs', 'segcs',
'segds', 'segds',
@ -676,7 +677,7 @@
'aesdec', 'aesdec',
'aesdeclast', 'aesdeclast',
'aesimc', 'aesimc',
'aeskeygen', 'aeskeygenassist',
'stosq', 'stosq',
'lodsq', 'lodsq',
'cmpsq' 'cmpsq'

View File

@ -333,6 +333,7 @@ A_SAR,
A_SBB, A_SBB,
A_SCASB, A_SCASB,
A_SCASD, A_SCASD,
A_SCASQ,
A_SCASW, A_SCASW,
A_SEGCS, A_SEGCS,
A_SEGDS, A_SEGDS,
@ -676,7 +677,7 @@ A_AESENCLAST,
A_AESDEC, A_AESDEC,
A_AESDECLAST, A_AESDECLAST,
A_AESIMC, A_AESIMC,
A_AESKEYGEN, A_AESKEYGENASSIST,
A_STOSQ, A_STOSQ,
A_LODSQ, A_LODSQ,
A_CMPSQ A_CMPSQ

View File

@ -334,6 +334,7 @@
(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_None, Ch_None)), (Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_None, Ch_None, Ch_None)), (Ch: (Ch_None, Ch_None, Ch_None)),
(Ch: (Ch_None, Ch_None, Ch_None)), (Ch: (Ch_None, Ch_None, Ch_None)),
(Ch: (Ch_None, Ch_None, Ch_None)), (Ch: (Ch_None, Ch_None, Ch_None)),

View File

@ -12,42 +12,42 @@
ops : 0; ops : 0;
optypes : (ot_none,ot_none,ot_none); optypes : (ot_none,ot_none,ot_none);
code : #1#55; code : #1#55;
flags : if_8086 flags : if_8086 or if_nox86_64
), ),
( (
opcode : A_AAD; opcode : A_AAD;
ops : 0; ops : 0;
optypes : (ot_none,ot_none,ot_none); optypes : (ot_none,ot_none,ot_none);
code : #2#213#10; code : #2#213#10;
flags : if_8086 flags : if_8086 or if_nox86_64
), ),
( (
opcode : A_AAD; opcode : A_AAD;
ops : 1; ops : 1;
optypes : (ot_immediate,ot_none,ot_none); optypes : (ot_immediate,ot_none,ot_none);
code : #1#213#20; code : #1#213#20;
flags : if_8086 or if_sb flags : if_8086 or if_sb or if_nox86_64
), ),
( (
opcode : A_AAM; opcode : A_AAM;
ops : 0; ops : 0;
optypes : (ot_none,ot_none,ot_none); optypes : (ot_none,ot_none,ot_none);
code : #2#212#10; code : #2#212#10;
flags : if_8086 flags : if_8086 or if_nox86_64
), ),
( (
opcode : A_AAM; opcode : A_AAM;
ops : 1; ops : 1;
optypes : (ot_immediate,ot_none,ot_none); optypes : (ot_immediate,ot_none,ot_none);
code : #1#212#20; code : #1#212#20;
flags : if_8086 or if_sb flags : if_8086 or if_sb or if_nox86_64
), ),
( (
opcode : A_AAS; opcode : A_AAS;
ops : 0; ops : 0;
optypes : (ot_none,ot_none,ot_none); optypes : (ot_none,ot_none,ot_none);
code : #1#63; code : #1#63;
flags : if_8086 flags : if_8086 or if_nox86_64
), ),
( (
opcode : A_ADC; opcode : A_ADC;
@ -285,21 +285,21 @@
ops : 2; ops : 2;
optypes : (ot_reg16,ot_reg16,ot_none); optypes : (ot_reg16,ot_reg16,ot_none);
code : #192#1#99#65; code : #192#1#99#65;
flags : if_286 or if_prot flags : if_286 or if_prot or if_nox86_64
), ),
( (
opcode : A_ARPL; opcode : A_ARPL;
ops : 2; ops : 2;
optypes : (ot_memory,ot_reg16,ot_none); optypes : (ot_memory,ot_reg16,ot_none);
code : #192#1#99#65; code : #192#1#99#65;
flags : if_286 or if_prot or if_sm flags : if_286 or if_prot or if_sm or if_nox86_64
), ),
( (
opcode : A_BOUND; opcode : A_BOUND;
ops : 2; ops : 2;
optypes : (ot_reg16 or ot_bits32 or ot_bits64,ot_memory,ot_none); optypes : (ot_reg16 or ot_bits32,ot_memory,ot_none);
code : #193#208#1#98#72; code : #193#208#1#98#72;
flags : if_186 flags : if_186 or if_nox86_64
), ),
( (
opcode : A_BSF; opcode : A_BSF;
@ -404,7 +404,7 @@
ops : 1; ops : 1;
optypes : (ot_immediate or ot_far,ot_none,ot_none); optypes : (ot_immediate or ot_far,ot_none,ot_none);
code : #208#1#154#28#31; code : #208#1#154#28#31;
flags : if_8086 flags : if_8086 or if_nox86_64
), ),
( (
opcode : A_CALL; opcode : A_CALL;
@ -425,35 +425,35 @@
ops : 2; ops : 2;
optypes : (ot_immediate,ot_immediate,ot_none); optypes : (ot_immediate,ot_immediate,ot_none);
code : #215#1#154#29#24; code : #215#1#154#29#24;
flags : if_8086 flags : if_8086 or if_nox86_64
), ),
( (
opcode : A_CALL; opcode : A_CALL;
ops : 2; ops : 2;
optypes : (ot_immediate or ot_bits16,ot_immediate,ot_none); optypes : (ot_immediate or ot_bits16,ot_immediate,ot_none);
code : #212#1#154#25#24; code : #212#1#154#25#24;
flags : if_8086 flags : if_8086 or if_nox86_64
), ),
( (
opcode : A_CALL; opcode : A_CALL;
ops : 2; ops : 2;
optypes : (ot_immediate,ot_immediate or ot_bits16,ot_none); optypes : (ot_immediate,ot_immediate or ot_bits16,ot_none);
code : #212#1#154#25#24; code : #212#1#154#25#24;
flags : if_8086 flags : if_8086 or if_nox86_64
), ),
( (
opcode : A_CALL; opcode : A_CALL;
ops : 2; ops : 2;
optypes : (ot_immediate or ot_bits32,ot_immediate,ot_none); optypes : (ot_immediate or ot_bits32,ot_immediate,ot_none);
code : #213#1#154#33#24; code : #213#1#154#33#24;
flags : if_386 flags : if_386 or if_nox86_64
), ),
( (
opcode : A_CALL; opcode : A_CALL;
ops : 2; ops : 2;
optypes : (ot_immediate,ot_immediate or ot_bits32,ot_none); optypes : (ot_immediate,ot_immediate or ot_bits32,ot_none);
code : #213#1#154#33#24; code : #213#1#154#33#24;
flags : if_386 flags : if_386 or if_nox86_64
), ),
( (
opcode : A_CBW; opcode : A_CBW;
@ -698,19 +698,19 @@
ops : 0; ops : 0;
optypes : (ot_none,ot_none,ot_none); optypes : (ot_none,ot_none,ot_none);
code : #1#39; code : #1#39;
flags : if_8086 flags : if_8086 or if_nox86_64
), ),
( (
opcode : A_DAS; opcode : A_DAS;
ops : 0; ops : 0;
optypes : (ot_none,ot_none,ot_none); optypes : (ot_none,ot_none,ot_none);
code : #1#47; code : #1#47;
flags : if_8086 flags : if_8086 or if_nox86_64
), ),
( (
opcode : A_DEC; opcode : A_DEC;
ops : 1; ops : 1;
optypes : (ot_reg16 or ot_bits32 or ot_bits64,ot_none,ot_none); optypes : (ot_reg16 or ot_bits32,ot_none,ot_none);
code : #208#8#72; code : #208#8#72;
flags : if_8086 or if_nox86_64 flags : if_8086 or if_nox86_64
), ),
@ -2397,7 +2397,7 @@
( (
opcode : A_INC; opcode : A_INC;
ops : 1; ops : 1;
optypes : (ot_reg16 or ot_bits32 or ot_bits64,ot_none,ot_none); optypes : (ot_reg16 or ot_bits32,ot_none,ot_none);
code : #208#8#64; code : #208#8#64;
flags : if_8086 or if_nox86_64 flags : if_8086 or if_nox86_64
), ),
@ -2476,7 +2476,7 @@
ops : 0; ops : 0;
optypes : (ot_none,ot_none,ot_none); optypes : (ot_none,ot_none,ot_none);
code : #1#206; code : #1#206;
flags : if_8086 flags : if_8086 or if_nox86_64
), ),
( (
opcode : A_INVD; opcode : A_INVD;
@ -2567,7 +2567,7 @@
ops : 1; ops : 1;
optypes : (ot_immediate or ot_far,ot_none,ot_none); optypes : (ot_immediate or ot_far,ot_none,ot_none);
code : #208#1#234#28#31; code : #208#1#234#28#31;
flags : if_8086 or if_pass2 flags : if_8086 or if_pass2 or if_nox86_64
), ),
( (
opcode : A_JMP; opcode : A_JMP;
@ -2588,21 +2588,21 @@
ops : 2; ops : 2;
optypes : (ot_immediate,ot_immediate,ot_none); optypes : (ot_immediate,ot_immediate,ot_none);
code : #215#1#234#29#24; code : #215#1#234#29#24;
flags : if_8086 flags : if_8086 or if_nox86_64
), ),
( (
opcode : A_JMP; opcode : A_JMP;
ops : 2; ops : 2;
optypes : (ot_immediate,ot_immediate or ot_bits16,ot_none); optypes : (ot_immediate,ot_immediate or ot_bits16,ot_none);
code : #212#1#234#25#24; code : #212#1#234#25#24;
flags : if_8086 flags : if_8086 or if_nox86_64
), ),
( (
opcode : A_JMP; opcode : A_JMP;
ops : 2; ops : 2;
optypes : (ot_immediate,ot_immediate or ot_bits32,ot_none); optypes : (ot_immediate,ot_immediate or ot_bits32,ot_none);
code : #213#1#234#33#24; code : #213#1#234#33#24;
flags : if_386 flags : if_386 or if_nox86_64
), ),
( (
opcode : A_LAHF; opcode : A_LAHF;
@ -2644,7 +2644,7 @@
ops : 2; ops : 2;
optypes : (ot_reg16 or ot_bits32,ot_memory,ot_none); optypes : (ot_reg16 or ot_bits32,ot_memory,ot_none);
code : #193#208#1#197#72; code : #193#208#1#197#72;
flags : if_8086 flags : if_8086 or if_nox86_64
), ),
( (
opcode : A_LEA; opcode : A_LEA;
@ -2672,7 +2672,7 @@
ops : 2; ops : 2;
optypes : (ot_reg16 or ot_bits32,ot_memory,ot_none); optypes : (ot_reg16 or ot_bits32,ot_memory,ot_none);
code : #193#208#1#196#72; code : #193#208#1#196#72;
flags : if_8086 flags : if_8086 or if_nox86_64
), ),
( (
opcode : A_LFS; opcode : A_LFS;
@ -4513,7 +4513,7 @@
ops : 1; ops : 1;
optypes : (ot_reg_dess,ot_none,ot_none); optypes : (ot_reg_dess,ot_none,ot_none);
code : #4; code : #4;
flags : if_8086 flags : if_8086 or if_nox86_64
), ),
( (
opcode : A_POP; opcode : A_POP;
@ -5745,7 +5745,7 @@
ops : 0; ops : 0;
optypes : (ot_none,ot_none,ot_none); optypes : (ot_none,ot_none,ot_none);
code : #1#158; code : #1#158;
flags : if_8086 or if_nox86_64 flags : if_8086
), ),
( (
opcode : A_SAL; opcode : A_SAL;
@ -5794,7 +5794,7 @@
ops : 0; ops : 0;
optypes : (ot_none,ot_none,ot_none); optypes : (ot_none,ot_none,ot_none);
code : #1#214; code : #1#214;
flags : if_8086 or if_undoc flags : if_8086 or if_undoc or if_nox86_64
), ),
( (
opcode : A_SAR; opcode : A_SAR;
@ -10907,14 +10907,14 @@
flags : if_sse4 flags : if_sse4
), ),
( (
opcode : A_AESKEYGEN; opcode : A_AESKEYGENASSIST;
ops : 3; ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_immediate); optypes : (ot_xmmreg,ot_xmmreg,ot_immediate);
code : #1#102#217#3#15#58#223#72#22; code : #1#102#217#3#15#58#223#72#22;
flags : if_sse4 flags : if_sse4
), ),
( (
opcode : A_AESKEYGEN; opcode : A_AESKEYGENASSIST;
ops : 3; ops : 3;
optypes : (ot_xmmreg,ot_memory,ot_immediate); optypes : (ot_xmmreg,ot_memory,ot_immediate);
code : #1#102#193#217#3#15#58#223#72#22; code : #1#102#193#217#3#15#58#223#72#22;

View File

@ -16,21 +16,21 @@ void void none
[AAA] [AAA]
(Ch_MEAX, Ch_WFlags, Ch_None) (Ch_MEAX, Ch_WFlags, Ch_None)
void \1\x37 8086 void \1\x37 8086,NOX86_64
[AAD,aadX] [AAD,aadX]
(Ch_MEAX, Ch_WFlags, Ch_None) (Ch_MEAX, Ch_WFlags, Ch_None)
void \2\xD5\x0A 8086 void \2\xD5\x0A 8086,NOX86_64
imm \1\xD5\24 8086,SB imm \1\xD5\24 8086,SB,NOX86_64
[AAM,aamX] [AAM,aamX]
(Ch_MEAX, Ch_WFlags, Ch_None) (Ch_MEAX, Ch_WFlags, Ch_None)
void \2\xD4\x0A 8086 void \2\xD4\x0A 8086,NOX86_64
imm \1\xD4\24 8086,SB imm \1\xD4\24 8086,SB,NOX86_64
[AAS] [AAS]
(Ch_MEAX, Ch_WFlags, Ch_None) (Ch_MEAX, Ch_WFlags, Ch_None)
void \1\x3F 8086 void \1\x3F 8086,NOX86_64
[ADC,adcX] [ADC,adcX]
(Ch_Mop2, Ch_Rop1, Ch_RWFlags) (Ch_Mop2, Ch_Rop1, Ch_RWFlags)
@ -76,12 +76,12 @@ rm8,imm \300\323\1\x80\204\21 8086,SB
[ARPL,arplX] [ARPL,arplX]
(Ch_WFlags, Ch_None, Ch_None) (Ch_WFlags, Ch_None, Ch_None)
reg16,reg16 \300\1\x63\101 286,PROT reg16,reg16 \300\1\x63\101 286,PROT,NOX86_64
mem,reg16 \300\1\x63\101 286,PROT,SM mem,reg16 \300\1\x63\101 286,PROT,SM,NOX86_64
[BOUND,boundX] [BOUND,boundX]
(Ch_Rop1, Ch_None, Ch_None) (Ch_Rop1, Ch_None, Ch_None)
reg16|32|64,mem \301\320\1\x62\110 186 reg16|32,mem \301\320\1\x62\110 186,NOX86_64
[BSF,bsfX] [BSF,bsfX]
(Ch_Wop2, Ch_WFlags, Ch_Rop1) (Ch_Wop2, Ch_WFlags, Ch_Rop1)
@ -121,14 +121,14 @@ rm16|32|64,imm \300\320\2\x0F\xBA\205\25 386,SB
imm \320\1\xE8\64 8086 imm \320\1\xE8\64 8086
rm16|32|64 \300\320\1\xFF\202 8086 rm16|32|64 \300\320\1\xFF\202 8086
imm|near \320\1\xE8\64 8086 imm|near \320\1\xE8\64 8086
imm|far \320\1\x9A\34\37 8086,ND imm|far \320\1\x9A\34\37 8086,ND,NOX86_64
mem|near \300\320\1\xFF\202 8086 mem|near \300\320\1\xFF\202 8086
mem|far \300\320\1\xFF\203 8086 mem|far \300\320\1\xFF\203 8086
imm:imm \327\1\x9A\35\30 8086 imm:imm \327\1\x9A\35\30 8086,NOX86_64
imm16:imm \324\1\x9A\31\30 8086 imm16:imm \324\1\x9A\31\30 8086,NOX86_64
imm:imm16 \324\1\x9A\31\30 8086 imm:imm16 \324\1\x9A\31\30 8086,NOX86_64
imm32:imm \325\1\x9A\41\30 386 imm32:imm \325\1\x9A\41\30 386,NOX86_64
imm:imm32 \325\1\x9A\41\30 386 imm:imm32 \325\1\x9A\41\30 386,NOX86_64
[CBW,cbtw] [CBW,cbtw]
(Ch_MEAX, Ch_None, Ch_None) (Ch_MEAX, Ch_None, Ch_None)
@ -217,15 +217,15 @@ void \325\1\x98 386
[DAA] [DAA]
(Ch_MEAX, Ch_None, Ch_None) (Ch_MEAX, Ch_None, Ch_None)
void \1\x27 8086 void \1\x27 8086,NOX86_64
[DAS] [DAS]
(Ch_MEAX, Ch_None, Ch_None) (Ch_MEAX, Ch_None, Ch_None)
void \1\x2F 8086 void \1\x2F 8086,NOX86_64
[DEC,decX] [DEC,decX]
(Ch_Mop1, Ch_WFlags, Ch_None) (Ch_Mop1, Ch_WFlags, Ch_None)
reg16|32|64 \320\10\x48 8086,NOX86_64 reg16|32 \320\10\x48 8086,NOX86_64
rm16|32|64 \300\320\1\xFF\201 8086 rm16|32|64 \300\320\1\xFF\201 8086
rm8 \300\323\1\xFE\201 8086 rm8 \300\323\1\xFE\201 8086
@ -793,7 +793,7 @@ reg_ax|32|64,reg_dx \320\1\xED 8086
[INC,incX] [INC,incX]
(Ch_Mop1, Ch_WFlags, Ch_None) (Ch_Mop1, Ch_WFlags, Ch_None)
reg16|32|64 \320\10\x40 8086,NOX86_64 reg16|32 \320\10\x40 8086,NOX86_64
rm16|32|64 \300\320\1\xFF\200 8086 rm16|32|64 \300\320\1\xFF\200 8086
rm8 \300\323\1\xFE\200 8086 rm8 \300\323\1\xFE\200 8086
@ -831,7 +831,7 @@ void \1\xCC 8086
[INTO] [INTO]
(Ch_All, Ch_None, Ch_None) (Ch_All, Ch_None, Ch_None)
void \1\xCE 8086 void \1\xCE 8086,NOX86_64
[INVD] [INVD]
(Ch_All, Ch_None, Ch_None) (Ch_All, Ch_None, Ch_None)
@ -873,13 +873,14 @@ imm16|32|64 \320\1\xE9\64 8086,PASS2
rm16|32|64 \300\320\1\xFF\204 8086 rm16|32|64 \300\320\1\xFF\204 8086
imm|short \1\xEB\50 8086,PASS2 imm|short \1\xEB\50 8086,PASS2
imm|near \320\1\xE9\64 8086,ND,PASS2 imm|near \320\1\xE9\64 8086,ND,PASS2
imm|far \320\1\xEA\34\37 8086,ND,PASS2 imm|far \320\1\xEA\34\37 8086,ND,PASS2,NOX86_64
mem|near \300\320\1\xFF\204 8086 mem|near \300\320\1\xFF\204 8086
mem|far \300\320\1\xFF\205 8086 mem|far \300\320\1\xFF\205 8086
imm:imm \327\1\xEA\35\30 8086 imm:imm \327\1\xEA\35\30 8086,NOX86_64
imm:imm16 \324\1\xEA\31\30 8086 imm:imm16 \324\1\xEA\31\30 8086,NOX86_64
imm:imm32 \325\1\xEA\41\30 386 imm:imm32 \325\1\xEA\41\30 386,NOX86_64
; SAHF/LAHF are valid in x86_64 only if CPUID.80000001h:ECX.0=1
[LAHF] [LAHF]
(Ch_WEAX, Ch_RFlags, Ch_None) (Ch_WEAX, Ch_RFlags, Ch_None)
void \1\x9F 8086 void \1\x9F 8086
@ -897,7 +898,7 @@ mem|far \300\320\1\xFF\203 8086
[LDS,ldsX] [LDS,ldsX]
(Ch_Wop2, Ch_Rop1, Ch_None) (Ch_Wop2, Ch_Rop1, Ch_None)
reg16|32,mem \301\320\1\xC5\110 8086 reg16|32,mem \301\320\1\xC5\110 8086,NOX86_64
[LEA,leaX] [LEA,leaX]
(Ch_Wop2, Ch_Rop1, Ch_None) (Ch_Wop2, Ch_Rop1, Ch_None)
@ -910,7 +911,7 @@ void \1\xC9 186
[LES,lesX] [LES,lesX]
(Ch_Wop2, Ch_Rop1, Ch_None) (Ch_Wop2, Ch_Rop1, Ch_None)
reg16|32,mem \301\320\1\xC4\110 8086 reg16|32,mem \301\320\1\xC4\110 8086,NOX86_64
[LFS,lfsX] [LFS,lfsX]
(Ch_Wop2, Ch_Rop1, Ch_None) (Ch_Wop2, Ch_Rop1, Ch_None)
@ -1463,7 +1464,7 @@ mmxreg,mem \301\2\x0F\x58\110 PENT,MMX,SM,CYRIX
reg16|32|64 \320\10\x58\335 8086 reg16|32|64 \320\10\x58\335 8086
rm16|32|64 \300\320\1\x8F\200\335 8086 rm16|32|64 \300\320\1\x8F\200\335 8086
reg_cs \1\x0F 8086,UNDOC,ND reg_cs \1\x0F 8086,UNDOC,ND
reg_dess \4 8086 reg_dess \4 8086,NOX86_64
reg_fsgs \1\x0F\5\335 386 reg_fsgs \1\x0F\5\335 386
[POPA,popaX] [POPA,popaX]
@ -1827,9 +1828,10 @@ mem80 \300\2\x0F\x7B\200 486,CYRIX,SMM
(Ch_All, Ch_None, Ch_None) (Ch_All, Ch_None, Ch_None)
void \2\x0F\xAA PENT,SMM void \2\x0F\xAA PENT,SMM
; SAHF/LAHF are valid in x86_64 only if CPUID.80000001h:ECX.0=1
[SAHF] [SAHF]
(Ch_WFlags, Ch_REAX, Ch_None) (Ch_WFlags, Ch_REAX, Ch_None)
void \1\x9E 8086,NOX86_64 void \1\x9E 8086
[SAL,salX] [SAL,salX]
(Ch_Mop2, Ch_Rop1, Ch_RWFlags) (Ch_Mop2, Ch_Rop1, Ch_RWFlags)
@ -1842,7 +1844,7 @@ rm8,imm \300\323\1\xC0\204\25 186,ND,SB
[SALC] [SALC]
(Ch_WEAX, Ch_RFLAGS, Ch_None) (Ch_WEAX, Ch_RFLAGS, Ch_None)
void \1\xD6 8086,UNDOC void \1\xD6 8086,UNDOC,NOX86_64
[SAR,sarX] [SAR,sarX]
(Ch_Mop2, Ch_Rop1, Ch_WFlags) (Ch_Mop2, Ch_Rop1, Ch_WFlags)
@ -1875,6 +1877,10 @@ void \332\1\xAE 8086
(Ch_All, Ch_None, Ch_None) (Ch_All, Ch_None, Ch_None)
void \332\325\1\xAF 386 void \332\325\1\xAF 386
[SCASQ]
(Ch_All, Ch_None, Ch_None)
void \332\326\1\xAF X86_64
[SCASW] [SCASW]
(Ch_All, Ch_None, Ch_None) (Ch_All, Ch_None, Ch_None)
void \332\324\1\xAF 8086 void \332\324\1\xAF 8086
@ -3700,7 +3706,7 @@ xmmreg,mem \1\x66\301\331\3\x0F\x38\xDF\110 SSE4
xmmreg,xmmreg \1\x66\331\3\x0F\x38\xDB\110 SSE4 xmmreg,xmmreg \1\x66\331\3\x0F\x38\xDB\110 SSE4
xmmreg,mem \1\x66\301\331\3\x0F\x38\xDB\110 SSE4 xmmreg,mem \1\x66\301\331\3\x0F\x38\xDB\110 SSE4
[AESKEYGEN,aeskeygenassist] ;AESKEYGENASIST [AESKEYGENASSIST]
(Ch_All, Ch_None, Ch_None) (Ch_All, Ch_None, Ch_None)
xmmreg,xmmreg,imm \1\x66\331\3\x0F\x3A\xDF\110\26 SSE4 xmmreg,xmmreg,imm \1\x66\331\3\x0F\x3A\xDF\110\26 SSE4
xmmreg,mem,imm \1\x66\301\331\3\x0F\x3A\xDF\110\26 SSE4 xmmreg,mem,imm \1\x66\301\331\3\x0F\x3A\xDF\110\26 SSE4

View File

@ -341,6 +341,7 @@ attsufNONE,
attsufNONE, attsufNONE,
attsufNONE, attsufNONE,
attsufNONE, attsufNONE,
attsufNONE,
attsufINT, attsufINT,
attsufINT, attsufINT,
attsufINT, attsufINT,

View File

@ -333,6 +333,7 @@
'sbb', 'sbb',
'scasb', 'scasb',
'scasl', 'scasl',
'scasq',
'scasw', 'scasw',
'cs', 'cs',
'ds', 'ds',

View File

@ -333,6 +333,7 @@
'sbb', 'sbb',
'scasb', 'scasb',
'scasd', 'scasd',
'scasq',
'scasw', 'scasw',
'segcs', 'segcs',
'segds', 'segds',
@ -676,7 +677,7 @@
'aesdec', 'aesdec',
'aesdeclast', 'aesdeclast',
'aesimc', 'aesimc',
'aeskeygen', 'aeskeygenassist',
'stosq', 'stosq',
'lodsq', 'lodsq',
'cmpsq' 'cmpsq'

View File

@ -1,2 +1,2 @@
{ don't edit, this file is generated from x86ins.dat } { don't edit, this file is generated from x86ins.dat }
1555; 1531;

View File

@ -333,6 +333,7 @@ A_SAR,
A_SBB, A_SBB,
A_SCASB, A_SCASB,
A_SCASD, A_SCASD,
A_SCASQ,
A_SCASW, A_SCASW,
A_SEGCS, A_SEGCS,
A_SEGDS, A_SEGDS,
@ -676,7 +677,7 @@ A_AESENCLAST,
A_AESDEC, A_AESDEC,
A_AESDECLAST, A_AESDECLAST,
A_AESIMC, A_AESIMC,
A_AESKEYGEN, A_AESKEYGENASSIST,
A_STOSQ, A_STOSQ,
A_LODSQ, A_LODSQ,
A_CMPSQ A_CMPSQ

View File

@ -334,6 +334,7 @@
(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_None, Ch_None)), (Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_None, Ch_None, Ch_None)), (Ch: (Ch_None, Ch_None, Ch_None)),
(Ch: (Ch_None, Ch_None, Ch_None)), (Ch: (Ch_None, Ch_None, Ch_None)),
(Ch: (Ch_None, Ch_None, Ch_None)), (Ch: (Ch_None, Ch_None, Ch_None)),

View File

@ -7,48 +7,6 @@
code : #0; code : #0;
flags : if_none flags : if_none
), ),
(
opcode : A_AAA;
ops : 0;
optypes : (ot_none,ot_none,ot_none);
code : #1#55;
flags : if_8086
),
(
opcode : A_AAD;
ops : 0;
optypes : (ot_none,ot_none,ot_none);
code : #2#213#10;
flags : if_8086
),
(
opcode : A_AAD;
ops : 1;
optypes : (ot_immediate,ot_none,ot_none);
code : #1#213#20;
flags : if_8086 or if_sb
),
(
opcode : A_AAM;
ops : 0;
optypes : (ot_none,ot_none,ot_none);
code : #2#212#10;
flags : if_8086
),
(
opcode : A_AAM;
ops : 1;
optypes : (ot_immediate,ot_none,ot_none);
code : #1#212#20;
flags : if_8086 or if_sb
),
(
opcode : A_AAS;
ops : 0;
optypes : (ot_none,ot_none,ot_none);
code : #1#63;
flags : if_8086
),
( (
opcode : A_ADC; opcode : A_ADC;
ops : 2; ops : 2;
@ -280,27 +238,6 @@
code : #192#211#1#128#132#17; code : #192#211#1#128#132#17;
flags : if_8086 or if_sb flags : if_8086 or if_sb
), ),
(
opcode : A_ARPL;
ops : 2;
optypes : (ot_reg16,ot_reg16,ot_none);
code : #192#1#99#65;
flags : if_286 or if_prot
),
(
opcode : A_ARPL;
ops : 2;
optypes : (ot_memory,ot_reg16,ot_none);
code : #192#1#99#65;
flags : if_286 or if_prot or if_sm
),
(
opcode : A_BOUND;
ops : 2;
optypes : (ot_reg16 or ot_bits32 or ot_bits64,ot_memory,ot_none);
code : #193#208#1#98#72;
flags : if_186
),
( (
opcode : A_BSF; opcode : A_BSF;
ops : 2; ops : 2;
@ -399,13 +336,6 @@
code : #208#1#232#52; code : #208#1#232#52;
flags : if_8086 flags : if_8086
), ),
(
opcode : A_CALL;
ops : 1;
optypes : (ot_immediate or ot_far,ot_none,ot_none);
code : #208#1#154#28#31;
flags : if_8086
),
( (
opcode : A_CALL; opcode : A_CALL;
ops : 1; ops : 1;
@ -420,41 +350,6 @@
code : #192#208#1#255#131; code : #192#208#1#255#131;
flags : if_8086 flags : if_8086
), ),
(
opcode : A_CALL;
ops : 2;
optypes : (ot_immediate,ot_immediate,ot_none);
code : #215#1#154#29#24;
flags : if_8086
),
(
opcode : A_CALL;
ops : 2;
optypes : (ot_immediate or ot_bits16,ot_immediate,ot_none);
code : #212#1#154#25#24;
flags : if_8086
),
(
opcode : A_CALL;
ops : 2;
optypes : (ot_immediate,ot_immediate or ot_bits16,ot_none);
code : #212#1#154#25#24;
flags : if_8086
),
(
opcode : A_CALL;
ops : 2;
optypes : (ot_immediate or ot_bits32,ot_immediate,ot_none);
code : #213#1#154#33#24;
flags : if_386
),
(
opcode : A_CALL;
ops : 2;
optypes : (ot_immediate,ot_immediate or ot_bits32,ot_none);
code : #213#1#154#33#24;
flags : if_386
),
( (
opcode : A_CBW; opcode : A_CBW;
ops : 0; ops : 0;
@ -693,20 +588,6 @@
code : #213#1#152; code : #213#1#152;
flags : if_386 flags : if_386
), ),
(
opcode : A_DAA;
ops : 0;
optypes : (ot_none,ot_none,ot_none);
code : #1#39;
flags : if_8086
),
(
opcode : A_DAS;
ops : 0;
optypes : (ot_none,ot_none,ot_none);
code : #1#47;
flags : if_8086
),
( (
opcode : A_DEC; opcode : A_DEC;
ops : 1; ops : 1;
@ -2457,13 +2338,6 @@
code : #1#204; code : #1#204;
flags : if_8086 flags : if_8086
), ),
(
opcode : A_INTO;
ops : 0;
optypes : (ot_none,ot_none,ot_none);
code : #1#206;
flags : if_8086
),
( (
opcode : A_INVD; opcode : A_INVD;
ops : 0; ops : 0;
@ -2548,13 +2422,6 @@
code : #208#1#233#52; code : #208#1#233#52;
flags : if_8086 or if_pass2 flags : if_8086 or if_pass2
), ),
(
opcode : A_JMP;
ops : 1;
optypes : (ot_immediate or ot_far,ot_none,ot_none);
code : #208#1#234#28#31;
flags : if_8086 or if_pass2
),
( (
opcode : A_JMP; opcode : A_JMP;
ops : 1; ops : 1;
@ -2569,27 +2436,6 @@
code : #192#208#1#255#133; code : #192#208#1#255#133;
flags : if_8086 flags : if_8086
), ),
(
opcode : A_JMP;
ops : 2;
optypes : (ot_immediate,ot_immediate,ot_none);
code : #215#1#234#29#24;
flags : if_8086
),
(
opcode : A_JMP;
ops : 2;
optypes : (ot_immediate,ot_immediate or ot_bits16,ot_none);
code : #212#1#234#25#24;
flags : if_8086
),
(
opcode : A_JMP;
ops : 2;
optypes : (ot_immediate,ot_immediate or ot_bits32,ot_none);
code : #213#1#234#33#24;
flags : if_386
),
( (
opcode : A_LAHF; opcode : A_LAHF;
ops : 0; ops : 0;
@ -2625,13 +2471,6 @@
code : #192#208#1#255#131; code : #192#208#1#255#131;
flags : if_8086 flags : if_8086
), ),
(
opcode : A_LDS;
ops : 2;
optypes : (ot_reg16 or ot_bits32,ot_memory,ot_none);
code : #193#208#1#197#72;
flags : if_8086
),
( (
opcode : A_LEA; opcode : A_LEA;
ops : 2; ops : 2;
@ -2653,13 +2492,6 @@
code : #1#201; code : #1#201;
flags : if_186 flags : if_186
), ),
(
opcode : A_LES;
ops : 2;
optypes : (ot_reg16 or ot_bits32,ot_memory,ot_none);
code : #193#208#1#196#72;
flags : if_8086
),
( (
opcode : A_LFS; opcode : A_LFS;
ops : 2; ops : 2;
@ -4466,13 +4298,6 @@
code : #1#15; code : #1#15;
flags : if_8086 or if_undoc flags : if_8086 or if_undoc
), ),
(
opcode : A_POP;
ops : 1;
optypes : (ot_reg_dess,ot_none,ot_none);
code : #4;
flags : if_8086
),
( (
opcode : A_POP; opcode : A_POP;
ops : 1; ops : 1;
@ -5642,6 +5467,13 @@
code : #2#15#170; code : #2#15#170;
flags : if_pent or if_smm flags : if_pent or if_smm
), ),
(
opcode : A_SAHF;
ops : 0;
optypes : (ot_none,ot_none,ot_none);
code : #1#158;
flags : if_8086
),
( (
opcode : A_SAL; opcode : A_SAL;
ops : 2; ops : 2;
@ -5684,13 +5516,6 @@
code : #192#211#1#192#132#21; code : #192#211#1#192#132#21;
flags : if_186 or if_sb flags : if_186 or if_sb
), ),
(
opcode : A_SALC;
ops : 0;
optypes : (ot_none,ot_none,ot_none);
code : #1#214;
flags : if_8086 or if_undoc
),
( (
opcode : A_SAR; opcode : A_SAR;
ops : 2; ops : 2;
@ -5824,6 +5649,13 @@
code : #218#213#1#175; code : #218#213#1#175;
flags : if_386 flags : if_386
), ),
(
opcode : A_SCASQ;
ops : 0;
optypes : (ot_none,ot_none,ot_none);
code : #218#214#1#175;
flags : if_x86_64
),
( (
opcode : A_SCASW; opcode : A_SCASW;
ops : 0; ops : 0;
@ -10851,14 +10683,14 @@
flags : if_sse4 flags : if_sse4
), ),
( (
opcode : A_AESKEYGEN; opcode : A_AESKEYGENASSIST;
ops : 3; ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_immediate); optypes : (ot_xmmreg,ot_xmmreg,ot_immediate);
code : #1#102#217#3#15#58#223#72#22; code : #1#102#217#3#15#58#223#72#22;
flags : if_sse4 flags : if_sse4
), ),
( (
opcode : A_AESKEYGEN; opcode : A_AESKEYGENASSIST;
ops : 3; ops : 3;
optypes : (ot_xmmreg,ot_memory,ot_immediate); optypes : (ot_xmmreg,ot_memory,ot_immediate);
code : #1#102#193#217#3#15#58#223#72#22; code : #1#102#193#217#3#15#58#223#72#22;

View File

@ -38,7 +38,7 @@ Procedure OpenKey_AES(Key: PAESKey256; OpenedKey: PAESOpenedKey); Assembler; NoS
PSHUFD XMM1, XMM1, 011100101b; MOVD EBX, XMM1; XOR EAX, EBX; MOV [RCX], EAX; ADD RCX, 4 PSHUFD XMM1, XMM1, 011100101b; MOVD EBX, XMM1; XOR EAX, EBX; MOV [RCX], EAX; ADD RCX, 4
PSHUFD XMM1, XMM1, 011100110b; MOVD EBX, XMM1; XOR EAX, EBX; MOV [RCX], EAX; ADD RCX, 4 PSHUFD XMM1, XMM1, 011100110b; MOVD EBX, XMM1; XOR EAX, EBX; MOV [RCX], EAX; ADD RCX, 4
PSHUFD XMM1, XMM1, 011100111b; MOVD EBX, XMM1; XOR EAX, EBX; MOV [RCX], EAX; ADD RCX, 4 PSHUFD XMM1, XMM1, 011100111b; MOVD EBX, XMM1; XOR EAX, EBX; MOV [RCX], EAX; ADD RCX, 4
MOVDQU XMM4, [RDX]; AESKEYGEN XMM4, XMM4, 0 MOVDQU XMM4, [RDX]; AESKEYGENASSIST XMM4, XMM4, 0
PSHUFD XMM4, XMM4, 011100110b; MOVD EAX, XMM4; MOVD EBX, XMM3; XOR EAX, EBX; MOV [RCX], EAX; ADD RCX, 4 PSHUFD XMM4, XMM4, 011100110b; MOVD EAX, XMM4; MOVD EBX, XMM3; XOR EAX, EBX; MOV [RCX], EAX; ADD RCX, 4
PSHUFD XMM3, XMM3, 011100101b; MOVD EBX, XMM3; XOR EAX, EBX; MOV [RCX], EAX; ADD RCX, 4 PSHUFD XMM3, XMM3, 011100101b; MOVD EBX, XMM3; XOR EAX, EBX; MOV [RCX], EAX; ADD RCX, 4
PSHUFD XMM3, XMM3, 011100110b; MOVD EBX, XMM3; XOR EAX, EBX; MOV [RCX], EAX; ADD RCX, 4 PSHUFD XMM3, XMM3, 011100110b; MOVD EBX, XMM3; XOR EAX, EBX; MOV [RCX], EAX; ADD RCX, 4
@ -56,13 +56,13 @@ Asm
MOVDQU XMM1, [RCX]; MOVDQU XMM3, [RCX+16] MOVDQU XMM1, [RCX]; MOVDQU XMM3, [RCX+16]
MOVDQU [RDX], XMM1; MOVDQU [RDX + $10], XMM3 MOVDQU [RDX], XMM1; MOVDQU [RDX + $10], XMM3
LEA RCX, [RDX+$20] LEA RCX, [RDX+$20]
AESKEYGEN XMM2, XMM3, $1; CALL key_expansion AESKEYGENASSIST XMM2, XMM3, $1; CALL key_expansion
AESKEYGEN XMM2, XMM3, $2; CALL key_expansion AESKEYGENASSIST XMM2, XMM3, $2; CALL key_expansion
AESKEYGEN XMM2, XMM3, $4; CALL key_expansion AESKEYGENASSIST XMM2, XMM3, $4; CALL key_expansion
AESKEYGEN XMM2, XMM3, $8; CALL key_expansion AESKEYGENASSIST XMM2, XMM3, $8; CALL key_expansion
AESKEYGEN XMM2, XMM3, $10; CALL key_expansion AESKEYGENASSIST XMM2, XMM3, $10; CALL key_expansion
AESKEYGEN XMM2, XMM3, $20; CALL key_expansion AESKEYGENASSIST XMM2, XMM3, $20; CALL key_expansion
AESKEYGEN XMM2, XMM3, $40; CALL key_expansion AESKEYGENASSIST XMM2, XMM3, $40; CALL key_expansion
MOVDQU XMM0, [R8+$00]; MOVDQU XMM1, [R8+$10]; MOVDQU XMM2, [R8+$20]; MOVDQU XMM3, [R8+$30] MOVDQU XMM0, [R8+$00]; MOVDQU XMM1, [R8+$10]; MOVDQU XMM2, [R8+$20]; MOVDQU XMM3, [R8+$30]
MOVDQU XMM4, [R8+$40]; MOVDQU XMM5, [R8+$50]; MOVDQU XMM6, [R8+$60]; MOVDQU XMM7, [R8+$70] MOVDQU XMM4, [R8+$40]; MOVDQU XMM5, [R8+$50]; MOVDQU XMM6, [R8+$60]; MOVDQU XMM7, [R8+$70]
MOVDQU XMM8, [R8+$80]; MOVDQU XMM9, [R8+$90]; MOVDQU XMM10, [R8+$A0]; MOVDQU XMM11, [R8+$B0] MOVDQU XMM8, [R8+$80]; MOVDQU XMM9, [R8+$90]; MOVDQU XMM10, [R8+$A0]; MOVDQU XMM11, [R8+$B0]