mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-07 15:47:53 +02:00
* 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:
parent
9bb0dc6cfe
commit
6739cec2b9
@ -333,6 +333,7 @@
|
||||
'sbb',
|
||||
'scasb',
|
||||
'scasl',
|
||||
'scasq',
|
||||
'scasw',
|
||||
'cs',
|
||||
'ds',
|
||||
|
@ -341,6 +341,7 @@ attsufNONE,
|
||||
attsufNONE,
|
||||
attsufNONE,
|
||||
attsufNONE,
|
||||
attsufNONE,
|
||||
attsufINT,
|
||||
attsufINT,
|
||||
attsufINT,
|
||||
|
@ -333,6 +333,7 @@
|
||||
'sbb',
|
||||
'scasb',
|
||||
'scasd',
|
||||
'scasq',
|
||||
'scasw',
|
||||
'segcs',
|
||||
'segds',
|
||||
@ -676,7 +677,7 @@
|
||||
'aesdec',
|
||||
'aesdeclast',
|
||||
'aesimc',
|
||||
'aeskeygen',
|
||||
'aeskeygenassist',
|
||||
'stosq',
|
||||
'lodsq',
|
||||
'cmpsq'
|
||||
|
@ -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
|
||||
|
@ -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)),
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
@ -341,6 +341,7 @@ attsufNONE,
|
||||
attsufNONE,
|
||||
attsufNONE,
|
||||
attsufNONE,
|
||||
attsufNONE,
|
||||
attsufINT,
|
||||
attsufINT,
|
||||
attsufINT,
|
||||
|
@ -333,6 +333,7 @@
|
||||
'sbb',
|
||||
'scasb',
|
||||
'scasl',
|
||||
'scasq',
|
||||
'scasw',
|
||||
'cs',
|
||||
'ds',
|
||||
|
@ -333,6 +333,7 @@
|
||||
'sbb',
|
||||
'scasb',
|
||||
'scasd',
|
||||
'scasq',
|
||||
'scasw',
|
||||
'segcs',
|
||||
'segds',
|
||||
@ -676,7 +677,7 @@
|
||||
'aesdec',
|
||||
'aesdeclast',
|
||||
'aesimc',
|
||||
'aeskeygen',
|
||||
'aeskeygenassist',
|
||||
'stosq',
|
||||
'lodsq',
|
||||
'cmpsq'
|
||||
|
@ -1,2 +1,2 @@
|
||||
{ don't edit, this file is generated from x86ins.dat }
|
||||
1555;
|
||||
1531;
|
||||
|
@ -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
|
||||
|
@ -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)),
|
||||
|
@ -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;
|
||||
|
@ -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]
|
||||
|
Loading…
Reference in New Issue
Block a user