mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-07 22:47:59 +02:00
* mkx86ins.pp: ot_signed flag must not be set by literal opcodes. Ignore 2- and 3-byte literal sequences, not just 1-byte ones.
* x86ins.dat: replaced codes \17 with literal zeros. They aren't necessary for FPC, and they were removed from NASM quite a while ago. git-svn-id: trunk@17430 -
This commit is contained in:
parent
3167cd628b
commit
9bb0dc6cfe
@ -144,7 +144,7 @@
|
||||
opcode : A_ADD;
|
||||
ops : 2;
|
||||
optypes : (ot_regmem or ot_bits8,ot_reg8,ot_none);
|
||||
code : #192#211#15#65;
|
||||
code : #192#211#1#0#65;
|
||||
flags : if_8086
|
||||
),
|
||||
(
|
||||
@ -1333,7 +1333,7 @@
|
||||
(
|
||||
opcode : A_FEMMS;
|
||||
ops : 0;
|
||||
optypes : (ot_none,ot_none,ot_none or ot_signed);
|
||||
optypes : (ot_none,ot_none,ot_none);
|
||||
code : #2#15#14;
|
||||
flags : if_pent or if_3dnow
|
||||
),
|
||||
@ -2727,7 +2727,7 @@
|
||||
opcode : A_LLDT;
|
||||
ops : 1;
|
||||
optypes : (ot_regmem or ot_bits16,ot_none,ot_none);
|
||||
code : #192#1#15#15#130;
|
||||
code : #192#2#15#0#130;
|
||||
flags : if_286 or if_prot or if_priv
|
||||
),
|
||||
(
|
||||
@ -2902,7 +2902,7 @@
|
||||
opcode : A_LTR;
|
||||
ops : 1;
|
||||
optypes : (ot_regmem or ot_bits16,ot_none,ot_none);
|
||||
code : #192#1#15#15#131;
|
||||
code : #192#2#15#0#131;
|
||||
flags : if_286 or if_prot or if_priv
|
||||
),
|
||||
(
|
||||
@ -4595,14 +4595,14 @@
|
||||
(
|
||||
opcode : A_PREFETCH;
|
||||
ops : 1;
|
||||
optypes : (ot_memory,ot_none or ot_signed,ot_none);
|
||||
optypes : (ot_memory,ot_none,ot_none);
|
||||
code : #2#15#13#128;
|
||||
flags : if_pent or if_3dnow or if_sm
|
||||
),
|
||||
(
|
||||
opcode : A_PREFETCHW;
|
||||
ops : 1;
|
||||
optypes : (ot_memory,ot_none or ot_signed,ot_none);
|
||||
optypes : (ot_memory,ot_none,ot_none);
|
||||
code : #2#15#13#129;
|
||||
flags : if_pent or if_3dnow or if_sm
|
||||
),
|
||||
@ -6108,14 +6108,14 @@
|
||||
opcode : A_SLDT;
|
||||
ops : 1;
|
||||
optypes : (ot_memory,ot_none,ot_none);
|
||||
code : #192#1#15#15#128;
|
||||
code : #192#2#15#0#128;
|
||||
flags : if_286
|
||||
),
|
||||
(
|
||||
opcode : A_SLDT;
|
||||
ops : 1;
|
||||
optypes : (ot_reg16 or ot_bits32 or ot_bits64,ot_none,ot_none);
|
||||
code : #208#1#15#15#128;
|
||||
code : #208#2#15#0#128;
|
||||
flags : if_286
|
||||
),
|
||||
(
|
||||
@ -6192,14 +6192,14 @@
|
||||
opcode : A_STR;
|
||||
ops : 1;
|
||||
optypes : (ot_memory,ot_none,ot_none);
|
||||
code : #192#1#15#15#129;
|
||||
code : #192#2#15#0#129;
|
||||
flags : if_286 or if_prot
|
||||
),
|
||||
(
|
||||
opcode : A_STR;
|
||||
ops : 1;
|
||||
optypes : (ot_reg16 or ot_bits32 or ot_bits64,ot_none,ot_none);
|
||||
code : #208#1#15#15#129;
|
||||
code : #208#2#15#0#129;
|
||||
flags : if_286 or if_prot
|
||||
),
|
||||
(
|
||||
@ -6465,42 +6465,42 @@
|
||||
opcode : A_VERR;
|
||||
ops : 1;
|
||||
optypes : (ot_memory,ot_none,ot_none);
|
||||
code : #192#1#15#15#132;
|
||||
code : #192#2#15#0#132;
|
||||
flags : if_286 or if_prot
|
||||
),
|
||||
(
|
||||
opcode : A_VERR;
|
||||
ops : 1;
|
||||
optypes : (ot_memory or ot_bits16,ot_none,ot_none);
|
||||
code : #192#1#15#15#132;
|
||||
code : #192#2#15#0#132;
|
||||
flags : if_286 or if_prot
|
||||
),
|
||||
(
|
||||
opcode : A_VERR;
|
||||
ops : 1;
|
||||
optypes : (ot_reg16,ot_none,ot_none);
|
||||
code : #192#1#15#15#132;
|
||||
code : #192#2#15#0#132;
|
||||
flags : if_286 or if_prot
|
||||
),
|
||||
(
|
||||
opcode : A_VERW;
|
||||
ops : 1;
|
||||
optypes : (ot_memory,ot_none,ot_none);
|
||||
code : #192#1#15#15#133;
|
||||
code : #192#2#15#0#133;
|
||||
flags : if_286 or if_prot
|
||||
),
|
||||
(
|
||||
opcode : A_VERW;
|
||||
ops : 1;
|
||||
optypes : (ot_memory or ot_bits16,ot_none,ot_none);
|
||||
code : #192#1#15#15#133;
|
||||
code : #192#2#15#0#133;
|
||||
flags : if_286 or if_prot
|
||||
),
|
||||
(
|
||||
opcode : A_VERW;
|
||||
ops : 1;
|
||||
optypes : (ot_reg16,ot_none,ot_none);
|
||||
code : #192#1#15#15#133;
|
||||
code : #192#2#15#0#133;
|
||||
flags : if_286 or if_prot
|
||||
),
|
||||
(
|
||||
@ -10104,14 +10104,14 @@
|
||||
(
|
||||
opcode : A_BLENDPS;
|
||||
ops : 3;
|
||||
optypes : (ot_xmmreg or ot_signed,ot_xmmreg,ot_immediate);
|
||||
optypes : (ot_xmmreg,ot_xmmreg,ot_immediate);
|
||||
code : #1#102#217#3#15#58#12#72#22;
|
||||
flags : if_sse4
|
||||
),
|
||||
(
|
||||
opcode : A_BLENDPS;
|
||||
ops : 3;
|
||||
optypes : (ot_xmmreg or ot_signed,ot_memory,ot_immediate);
|
||||
optypes : (ot_xmmreg,ot_memory,ot_immediate);
|
||||
code : #1#102#193#217#3#15#58#12#72#22;
|
||||
flags : if_sse4
|
||||
),
|
||||
@ -10265,14 +10265,14 @@
|
||||
(
|
||||
opcode : A_PBLENDW;
|
||||
ops : 3;
|
||||
optypes : (ot_xmmreg,ot_xmmreg,ot_immediate or ot_signed);
|
||||
optypes : (ot_xmmreg,ot_xmmreg,ot_immediate);
|
||||
code : #1#102#217#3#15#58#14#72#22;
|
||||
flags : if_sse4
|
||||
),
|
||||
(
|
||||
opcode : A_PBLENDW;
|
||||
ops : 3;
|
||||
optypes : (ot_xmmreg,ot_memory,ot_immediate or ot_signed);
|
||||
optypes : (ot_xmmreg,ot_memory,ot_immediate);
|
||||
code : #1#102#193#217#3#15#58#14#72#22;
|
||||
flags : if_sse4
|
||||
),
|
||||
|
@ -198,7 +198,7 @@ var
|
||||
infile,insfile : text;
|
||||
{ instruction fields }
|
||||
skip : boolean;
|
||||
last,
|
||||
literalcount,
|
||||
ops : longint;
|
||||
intopcode,
|
||||
attopcode,
|
||||
@ -360,24 +360,29 @@ begin
|
||||
{ codes }
|
||||
skipspace;
|
||||
j:=0;
|
||||
last:=0;
|
||||
literalcount:=0;
|
||||
if s[i] in ['\','0'..'9'] then
|
||||
begin
|
||||
while not(s[i] in [' ',#9]) do
|
||||
begin
|
||||
code:=readnumber;
|
||||
{ for some codes we want also to change the optypes, but not
|
||||
if the last byte was a 1 then this byte belongs to a direct
|
||||
copy }
|
||||
if last<>1 then
|
||||
begin
|
||||
case code of
|
||||
12,13,14 :
|
||||
optypes[code-11]:=optypes[code-11]+' or ot_signed';
|
||||
end;
|
||||
end;
|
||||
if the code belongs to a literal sequence }
|
||||
if (literalcount=0) and (code>=1) and (code<=3) then
|
||||
literalcount:=code
|
||||
else
|
||||
begin
|
||||
if literalcount>0 then
|
||||
dec(literalcount)
|
||||
else
|
||||
begin
|
||||
case code of
|
||||
12,13,14 :
|
||||
optypes[code-11]:=optypes[code-11]+' or ot_signed';
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
codes:=codes+'#'+tostr(code);
|
||||
last:=code;
|
||||
inc(j);
|
||||
end;
|
||||
end
|
||||
|
@ -50,7 +50,7 @@ rm8,imm \300\323\1\x80\202\21 8086,SB
|
||||
(Ch_Mop2, Ch_Rop1, Ch_WFlags)
|
||||
regmem,reg16|32|64 \300\320\1\x01\101 8086,SM
|
||||
reg16|32|64,regmem \301\320\1\x03\110 8086,SM
|
||||
rm8,reg8 \300\323\17\101 8086
|
||||
rm8,reg8 \300\323\1\x00\101 8086
|
||||
reg8,rm8 \301\323\1\x02\110 8086,SM
|
||||
rm16|32|64,imm8 \300\320\1\x83\200\15 8086
|
||||
reg_eax|64,imm \320\1\x05\41 386,SD
|
||||
@ -936,7 +936,7 @@ mem|near \300\320\1\xFF\204 8086
|
||||
|
||||
[LLDT,lldtX]
|
||||
(Ch_None, Ch_None, Ch_None)
|
||||
rm16 \300\1\x0F\17\202 286,PROT,PRIV
|
||||
rm16 \300\2\x0F\x00\202 286,PROT,PRIV
|
||||
|
||||
[LMSW,lmswX]
|
||||
(Ch_None, Ch_None, Ch_None)
|
||||
@ -1006,7 +1006,7 @@ reg16|32|64,mem \301\320\2\x0F\xB2\110 386
|
||||
|
||||
[LTR,ltrX]
|
||||
(Ch_None, Ch_None, Ch_None)
|
||||
rm16 \300\1\x0F\17\203 286,PROT,PRIV
|
||||
rm16 \300\2\x0F\x00\203 286,PROT,PRIV
|
||||
|
||||
[MONITOR]
|
||||
(Ch_None, Ch_None, Ch_None)
|
||||
@ -1941,8 +1941,8 @@ mem \300\2\x0F\x01\201 286
|
||||
|
||||
[SLDT,sldtX]
|
||||
(Ch_Wop1, Ch_None, Ch_None)
|
||||
mem \300\1\x0F\17\200 286
|
||||
reg16|32|64 \320\1\x0F\17\200 286
|
||||
mem \300\2\x0F\x00\200 286
|
||||
reg16|32|64 \320\2\x0F\x00\200 286
|
||||
|
||||
[SMI]
|
||||
(Ch_All, Ch_None, Ch_None)
|
||||
@ -1986,8 +1986,8 @@ void \324\1\xAB 8086
|
||||
|
||||
[STR,strX]
|
||||
(Ch_Wop1, Ch_None, Ch_None)
|
||||
mem \300\1\x0F\17\201 286,PROT
|
||||
reg16|32|64 \320\1\x0F\17\201 286,PROT
|
||||
mem \300\2\x0F\x00\201 286,PROT
|
||||
reg16|32|64 \320\2\x0F\x00\201 286,PROT
|
||||
|
||||
[SUB,subX]
|
||||
(Ch_Mop2, Ch_Rop1, Ch_WFlags)
|
||||
@ -2064,15 +2064,15 @@ reg8,rm8 \301\323\2\x0F\x12\110 386,UNDOC
|
||||
|
||||
[VERR,verrX]
|
||||
(Ch_WFlags, Ch_None, Ch_None)
|
||||
mem \300\1\x0F\17\204 286,PROT
|
||||
mem16 \300\1\x0F\17\204 286,PROT
|
||||
reg16 \300\1\x0F\17\204 286,PROT
|
||||
mem \300\2\x0F\x00\204 286,PROT
|
||||
mem16 \300\2\x0F\x00\204 286,PROT
|
||||
reg16 \300\2\x0F\x00\204 286,PROT
|
||||
|
||||
[VERW]
|
||||
(Ch_WFlags, Ch_None, Ch_None)
|
||||
mem \300\1\x0F\17\205 286,PROT
|
||||
mem16 \300\1\x0F\17\205 286,PROT
|
||||
reg16 \300\1\x0F\17\205 286,PROT
|
||||
mem \300\2\x0F\x00\205 286,PROT
|
||||
mem16 \300\2\x0F\x00\205 286,PROT
|
||||
reg16 \300\2\x0F\x00\205 286,PROT
|
||||
|
||||
[WAIT]
|
||||
(Ch_None, Ch_None, Ch_None)
|
||||
@ -3407,12 +3407,12 @@ xmmreg,mem \1\x66\301\331\3\x0F\x38\x0A\110 SSE4
|
||||
;*******************************************************************************
|
||||
;**********SSE4.1***************************************************************
|
||||
;*******************************************************************************
|
||||
[BLENDPS] ;By hands delete 'or ot_signed' from i386tab.inc or x8664tab.inc
|
||||
[BLENDPS]
|
||||
(Ch_All, Ch_None, Ch_None)
|
||||
xmmreg,xmmreg,imm \1\x66\331\3\x0F\x3A\x0C\110\26 SSE4
|
||||
xmmreg,mem,imm \1\x66\301\331\3\x0F\x3A\x0C\110\26 SSE4
|
||||
|
||||
[BLENDPD] ;By hands delete 'or ot_signed' from i386tab.inc or x8664tab.inc
|
||||
[BLENDPD]
|
||||
(Ch_All, Ch_None, Ch_None)
|
||||
xmmreg,xmmreg,imm \1\x66\331\2\x0F\x3A\375\1\x0D\110\26 SSE4
|
||||
xmmreg,mem,imm \1\x66\301\331\2\x0F\x3A\375\1\x0D\110\26 SSE4
|
||||
|
@ -144,7 +144,7 @@
|
||||
opcode : A_ADD;
|
||||
ops : 2;
|
||||
optypes : (ot_regmem or ot_bits8,ot_reg8,ot_none);
|
||||
code : #192#211#15#65;
|
||||
code : #192#211#1#0#65;
|
||||
flags : if_8086
|
||||
),
|
||||
(
|
||||
@ -1326,7 +1326,7 @@
|
||||
(
|
||||
opcode : A_FEMMS;
|
||||
ops : 0;
|
||||
optypes : (ot_none,ot_none,ot_none or ot_signed);
|
||||
optypes : (ot_none,ot_none,ot_none);
|
||||
code : #2#15#14;
|
||||
flags : if_pent or if_3dnow
|
||||
),
|
||||
@ -2713,7 +2713,7 @@
|
||||
opcode : A_LLDT;
|
||||
ops : 1;
|
||||
optypes : (ot_regmem or ot_bits16,ot_none,ot_none);
|
||||
code : #192#1#15#15#130;
|
||||
code : #192#2#15#0#130;
|
||||
flags : if_286 or if_prot or if_priv
|
||||
),
|
||||
(
|
||||
@ -2888,7 +2888,7 @@
|
||||
opcode : A_LTR;
|
||||
ops : 1;
|
||||
optypes : (ot_regmem or ot_bits16,ot_none,ot_none);
|
||||
code : #192#1#15#15#131;
|
||||
code : #192#2#15#0#131;
|
||||
flags : if_286 or if_prot or if_priv
|
||||
),
|
||||
(
|
||||
@ -4532,14 +4532,14 @@
|
||||
(
|
||||
opcode : A_PREFETCH;
|
||||
ops : 1;
|
||||
optypes : (ot_memory,ot_none or ot_signed,ot_none);
|
||||
optypes : (ot_memory,ot_none,ot_none);
|
||||
code : #2#15#13#128;
|
||||
flags : if_pent or if_3dnow or if_sm
|
||||
),
|
||||
(
|
||||
opcode : A_PREFETCHW;
|
||||
ops : 1;
|
||||
optypes : (ot_memory,ot_none or ot_signed,ot_none);
|
||||
optypes : (ot_memory,ot_none,ot_none);
|
||||
code : #2#15#13#129;
|
||||
flags : if_pent or if_3dnow or if_sm
|
||||
),
|
||||
@ -6003,14 +6003,14 @@
|
||||
opcode : A_SLDT;
|
||||
ops : 1;
|
||||
optypes : (ot_memory,ot_none,ot_none);
|
||||
code : #192#1#15#15#128;
|
||||
code : #192#2#15#0#128;
|
||||
flags : if_286
|
||||
),
|
||||
(
|
||||
opcode : A_SLDT;
|
||||
ops : 1;
|
||||
optypes : (ot_reg16 or ot_bits32 or ot_bits64,ot_none,ot_none);
|
||||
code : #208#1#15#15#128;
|
||||
code : #208#2#15#0#128;
|
||||
flags : if_286
|
||||
),
|
||||
(
|
||||
@ -6087,14 +6087,14 @@
|
||||
opcode : A_STR;
|
||||
ops : 1;
|
||||
optypes : (ot_memory,ot_none,ot_none);
|
||||
code : #192#1#15#15#129;
|
||||
code : #192#2#15#0#129;
|
||||
flags : if_286 or if_prot
|
||||
),
|
||||
(
|
||||
opcode : A_STR;
|
||||
ops : 1;
|
||||
optypes : (ot_reg16 or ot_bits32 or ot_bits64,ot_none,ot_none);
|
||||
code : #208#1#15#15#129;
|
||||
code : #208#2#15#0#129;
|
||||
flags : if_286 or if_prot
|
||||
),
|
||||
(
|
||||
@ -6360,42 +6360,42 @@
|
||||
opcode : A_VERR;
|
||||
ops : 1;
|
||||
optypes : (ot_memory,ot_none,ot_none);
|
||||
code : #192#1#15#15#132;
|
||||
code : #192#2#15#0#132;
|
||||
flags : if_286 or if_prot
|
||||
),
|
||||
(
|
||||
opcode : A_VERR;
|
||||
ops : 1;
|
||||
optypes : (ot_memory or ot_bits16,ot_none,ot_none);
|
||||
code : #192#1#15#15#132;
|
||||
code : #192#2#15#0#132;
|
||||
flags : if_286 or if_prot
|
||||
),
|
||||
(
|
||||
opcode : A_VERR;
|
||||
ops : 1;
|
||||
optypes : (ot_reg16,ot_none,ot_none);
|
||||
code : #192#1#15#15#132;
|
||||
code : #192#2#15#0#132;
|
||||
flags : if_286 or if_prot
|
||||
),
|
||||
(
|
||||
opcode : A_VERW;
|
||||
ops : 1;
|
||||
optypes : (ot_memory,ot_none,ot_none);
|
||||
code : #192#1#15#15#133;
|
||||
code : #192#2#15#0#133;
|
||||
flags : if_286 or if_prot
|
||||
),
|
||||
(
|
||||
opcode : A_VERW;
|
||||
ops : 1;
|
||||
optypes : (ot_memory or ot_bits16,ot_none,ot_none);
|
||||
code : #192#1#15#15#133;
|
||||
code : #192#2#15#0#133;
|
||||
flags : if_286 or if_prot
|
||||
),
|
||||
(
|
||||
opcode : A_VERW;
|
||||
ops : 1;
|
||||
optypes : (ot_reg16,ot_none,ot_none);
|
||||
code : #192#1#15#15#133;
|
||||
code : #192#2#15#0#133;
|
||||
flags : if_286 or if_prot
|
||||
),
|
||||
(
|
||||
@ -10048,14 +10048,14 @@
|
||||
(
|
||||
opcode : A_BLENDPS;
|
||||
ops : 3;
|
||||
optypes : (ot_xmmreg or ot_signed,ot_xmmreg,ot_immediate);
|
||||
optypes : (ot_xmmreg,ot_xmmreg,ot_immediate);
|
||||
code : #1#102#217#3#15#58#12#72#22;
|
||||
flags : if_sse4
|
||||
),
|
||||
(
|
||||
opcode : A_BLENDPS;
|
||||
ops : 3;
|
||||
optypes : (ot_xmmreg or ot_signed,ot_memory,ot_immediate);
|
||||
optypes : (ot_xmmreg,ot_memory,ot_immediate);
|
||||
code : #1#102#193#217#3#15#58#12#72#22;
|
||||
flags : if_sse4
|
||||
),
|
||||
@ -10209,14 +10209,14 @@
|
||||
(
|
||||
opcode : A_PBLENDW;
|
||||
ops : 3;
|
||||
optypes : (ot_xmmreg,ot_xmmreg,ot_immediate or ot_signed);
|
||||
optypes : (ot_xmmreg,ot_xmmreg,ot_immediate);
|
||||
code : #1#102#217#3#15#58#14#72#22;
|
||||
flags : if_sse4
|
||||
),
|
||||
(
|
||||
opcode : A_PBLENDW;
|
||||
ops : 3;
|
||||
optypes : (ot_xmmreg,ot_memory,ot_immediate or ot_signed);
|
||||
optypes : (ot_xmmreg,ot_memory,ot_immediate);
|
||||
code : #1#102#193#217#3#15#58#14#72#22;
|
||||
flags : if_sse4
|
||||
),
|
||||
|
Loading…
Reference in New Issue
Block a user