* 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',
'scasb',
'scasl',
'scasq',
'scasw',
'cs',
'ds',

View File

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

View File

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

View File

@ -333,6 +333,7 @@ A_SAR,
A_SBB,
A_SCASB,
A_SCASD,
A_SCASQ,
A_SCASW,
A_SEGCS,
A_SEGDS,
@ -676,7 +677,7 @@ A_AESENCLAST,
A_AESDEC,
A_AESDECLAST,
A_AESIMC,
A_AESKEYGEN,
A_AESKEYGENASSIST,
A_STOSQ,
A_LODSQ,
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_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;
optypes : (ot_none,ot_none,ot_none);
code : #1#55;
flags : if_8086
flags : if_8086 or if_nox86_64
),
(
opcode : A_AAD;
ops : 0;
optypes : (ot_none,ot_none,ot_none);
code : #2#213#10;
flags : if_8086
flags : if_8086 or if_nox86_64
),
(
opcode : A_AAD;
ops : 1;
optypes : (ot_immediate,ot_none,ot_none);
code : #1#213#20;
flags : if_8086 or if_sb
flags : if_8086 or if_sb or if_nox86_64
),
(
opcode : A_AAM;
ops : 0;
optypes : (ot_none,ot_none,ot_none);
code : #2#212#10;
flags : if_8086
flags : if_8086 or if_nox86_64
),
(
opcode : A_AAM;
ops : 1;
optypes : (ot_immediate,ot_none,ot_none);
code : #1#212#20;
flags : if_8086 or if_sb
flags : if_8086 or if_sb or if_nox86_64
),
(
opcode : A_AAS;
ops : 0;
optypes : (ot_none,ot_none,ot_none);
code : #1#63;
flags : if_8086
flags : if_8086 or if_nox86_64
),
(
opcode : A_ADC;
@ -285,21 +285,21 @@
ops : 2;
optypes : (ot_reg16,ot_reg16,ot_none);
code : #192#1#99#65;
flags : if_286 or if_prot
flags : if_286 or if_prot or if_nox86_64
),
(
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
flags : if_286 or if_prot or if_sm or if_nox86_64
),
(
opcode : A_BOUND;
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;
flags : if_186
flags : if_186 or if_nox86_64
),
(
opcode : A_BSF;
@ -404,7 +404,7 @@
ops : 1;
optypes : (ot_immediate or ot_far,ot_none,ot_none);
code : #208#1#154#28#31;
flags : if_8086
flags : if_8086 or if_nox86_64
),
(
opcode : A_CALL;
@ -425,35 +425,35 @@
ops : 2;
optypes : (ot_immediate,ot_immediate,ot_none);
code : #215#1#154#29#24;
flags : if_8086
flags : if_8086 or if_nox86_64
),
(
opcode : A_CALL;
ops : 2;
optypes : (ot_immediate or ot_bits16,ot_immediate,ot_none);
code : #212#1#154#25#24;
flags : if_8086
flags : if_8086 or if_nox86_64
),
(
opcode : A_CALL;
ops : 2;
optypes : (ot_immediate,ot_immediate or ot_bits16,ot_none);
code : #212#1#154#25#24;
flags : if_8086
flags : if_8086 or if_nox86_64
),
(
opcode : A_CALL;
ops : 2;
optypes : (ot_immediate or ot_bits32,ot_immediate,ot_none);
code : #213#1#154#33#24;
flags : if_386
flags : if_386 or if_nox86_64
),
(
opcode : A_CALL;
ops : 2;
optypes : (ot_immediate,ot_immediate or ot_bits32,ot_none);
code : #213#1#154#33#24;
flags : if_386
flags : if_386 or if_nox86_64
),
(
opcode : A_CBW;
@ -698,19 +698,19 @@
ops : 0;
optypes : (ot_none,ot_none,ot_none);
code : #1#39;
flags : if_8086
flags : if_8086 or if_nox86_64
),
(
opcode : A_DAS;
ops : 0;
optypes : (ot_none,ot_none,ot_none);
code : #1#47;
flags : if_8086
flags : if_8086 or if_nox86_64
),
(
opcode : A_DEC;
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;
flags : if_8086 or if_nox86_64
),
@ -2397,7 +2397,7 @@
(
opcode : A_INC;
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;
flags : if_8086 or if_nox86_64
),
@ -2476,7 +2476,7 @@
ops : 0;
optypes : (ot_none,ot_none,ot_none);
code : #1#206;
flags : if_8086
flags : if_8086 or if_nox86_64
),
(
opcode : A_INVD;
@ -2567,7 +2567,7 @@
ops : 1;
optypes : (ot_immediate or ot_far,ot_none,ot_none);
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;
@ -2588,21 +2588,21 @@
ops : 2;
optypes : (ot_immediate,ot_immediate,ot_none);
code : #215#1#234#29#24;
flags : if_8086
flags : if_8086 or if_nox86_64
),
(
opcode : A_JMP;
ops : 2;
optypes : (ot_immediate,ot_immediate or ot_bits16,ot_none);
code : #212#1#234#25#24;
flags : if_8086
flags : if_8086 or if_nox86_64
),
(
opcode : A_JMP;
ops : 2;
optypes : (ot_immediate,ot_immediate or ot_bits32,ot_none);
code : #213#1#234#33#24;
flags : if_386
flags : if_386 or if_nox86_64
),
(
opcode : A_LAHF;
@ -2644,7 +2644,7 @@
ops : 2;
optypes : (ot_reg16 or ot_bits32,ot_memory,ot_none);
code : #193#208#1#197#72;
flags : if_8086
flags : if_8086 or if_nox86_64
),
(
opcode : A_LEA;
@ -2672,7 +2672,7 @@
ops : 2;
optypes : (ot_reg16 or ot_bits32,ot_memory,ot_none);
code : #193#208#1#196#72;
flags : if_8086
flags : if_8086 or if_nox86_64
),
(
opcode : A_LFS;
@ -4513,7 +4513,7 @@
ops : 1;
optypes : (ot_reg_dess,ot_none,ot_none);
code : #4;
flags : if_8086
flags : if_8086 or if_nox86_64
),
(
opcode : A_POP;
@ -5745,7 +5745,7 @@
ops : 0;
optypes : (ot_none,ot_none,ot_none);
code : #1#158;
flags : if_8086 or if_nox86_64
flags : if_8086
),
(
opcode : A_SAL;
@ -5794,7 +5794,7 @@
ops : 0;
optypes : (ot_none,ot_none,ot_none);
code : #1#214;
flags : if_8086 or if_undoc
flags : if_8086 or if_undoc or if_nox86_64
),
(
opcode : A_SAR;
@ -10907,14 +10907,14 @@
flags : if_sse4
),
(
opcode : A_AESKEYGEN;
opcode : A_AESKEYGENASSIST;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_immediate);
code : #1#102#217#3#15#58#223#72#22;
flags : if_sse4
),
(
opcode : A_AESKEYGEN;
opcode : A_AESKEYGENASSIST;
ops : 3;
optypes : (ot_xmmreg,ot_memory,ot_immediate);
code : #1#102#193#217#3#15#58#223#72#22;

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -333,6 +333,7 @@ A_SAR,
A_SBB,
A_SCASB,
A_SCASD,
A_SCASQ,
A_SCASW,
A_SEGCS,
A_SEGDS,
@ -676,7 +677,7 @@ A_AESENCLAST,
A_AESDEC,
A_AESDECLAST,
A_AESIMC,
A_AESKEYGEN,
A_AESKEYGENASSIST,
A_STOSQ,
A_LODSQ,
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_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;
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;
ops : 2;
@ -280,27 +238,6 @@
code : #192#211#1#128#132#17;
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;
ops : 2;
@ -399,13 +336,6 @@
code : #208#1#232#52;
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;
ops : 1;
@ -420,41 +350,6 @@
code : #192#208#1#255#131;
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;
ops : 0;
@ -693,20 +588,6 @@
code : #213#1#152;
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;
ops : 1;
@ -2457,13 +2338,6 @@
code : #1#204;
flags : if_8086
),
(
opcode : A_INTO;
ops : 0;
optypes : (ot_none,ot_none,ot_none);
code : #1#206;
flags : if_8086
),
(
opcode : A_INVD;
ops : 0;
@ -2548,13 +2422,6 @@
code : #208#1#233#52;
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;
ops : 1;
@ -2569,27 +2436,6 @@
code : #192#208#1#255#133;
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;
ops : 0;
@ -2625,13 +2471,6 @@
code : #192#208#1#255#131;
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;
ops : 2;
@ -2653,13 +2492,6 @@
code : #1#201;
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;
ops : 2;
@ -4466,13 +4298,6 @@
code : #1#15;
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;
ops : 1;
@ -5642,6 +5467,13 @@
code : #2#15#170;
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;
ops : 2;
@ -5684,13 +5516,6 @@
code : #192#211#1#192#132#21;
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;
ops : 2;
@ -5824,6 +5649,13 @@
code : #218#213#1#175;
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;
ops : 0;
@ -10851,14 +10683,14 @@
flags : if_sse4
),
(
opcode : A_AESKEYGEN;
opcode : A_AESKEYGENASSIST;
ops : 3;
optypes : (ot_xmmreg,ot_xmmreg,ot_immediate);
code : #1#102#217#3#15#58#223#72#22;
flags : if_sse4
),
(
opcode : A_AESKEYGEN;
opcode : A_AESKEYGENASSIST;
ops : 3;
optypes : (ot_xmmreg,ot_memory,ot_immediate);
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, 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
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 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
@ -56,13 +56,13 @@ Asm
MOVDQU XMM1, [RCX]; MOVDQU XMM3, [RCX+16]
MOVDQU [RDX], XMM1; MOVDQU [RDX + $10], XMM3
LEA RCX, [RDX+$20]
AESKEYGEN XMM2, XMM3, $1; CALL key_expansion
AESKEYGEN XMM2, XMM3, $2; CALL key_expansion
AESKEYGEN XMM2, XMM3, $4; CALL key_expansion
AESKEYGEN XMM2, XMM3, $8; CALL key_expansion
AESKEYGEN XMM2, XMM3, $10; CALL key_expansion
AESKEYGEN XMM2, XMM3, $20; CALL key_expansion
AESKEYGEN XMM2, XMM3, $40; CALL key_expansion
AESKEYGENASSIST XMM2, XMM3, $1; CALL key_expansion
AESKEYGENASSIST XMM2, XMM3, $2; CALL key_expansion
AESKEYGENASSIST XMM2, XMM3, $4; CALL key_expansion
AESKEYGENASSIST XMM2, XMM3, $8; CALL key_expansion
AESKEYGENASSIST XMM2, XMM3, $10; CALL key_expansion
AESKEYGENASSIST XMM2, XMM3, $20; 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 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]