mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-05-15 10:02:54 +02:00
* x86 assembler: write REX prefix before the first literal byte of instruction (this becomes possible once the instruction table has all $66,$F2,$F3 prefixes changed to non-literal control codes). This way it is no longer necessary to manually specify position of REX in every instruction entry (code \323 becomes obsolete), and the situation when REX is not written (IE 200603191) is hopefully gone forever.
git-svn-id: trunk@17456 -
This commit is contained in:
parent
3064726d71
commit
86d0c7f4c5
@ -2080,6 +2080,9 @@ implementation
|
||||
break;
|
||||
1,2,3 :
|
||||
begin
|
||||
{$ifdef x86_64}
|
||||
maybewriterex;
|
||||
{$endif x86_64}
|
||||
objdata.writebytes(codes^,c);
|
||||
inc(codes,c);
|
||||
end;
|
||||
@ -2118,6 +2121,9 @@ implementation
|
||||
end;
|
||||
8,9,10 :
|
||||
begin
|
||||
{$ifdef x86_64}
|
||||
maybewriterex;
|
||||
{$endif x86_64}
|
||||
bytes[0]:=ord(codes^)+regval(oper[c-8]^.reg);
|
||||
inc(codes);
|
||||
objdata.writebytes(bytes,1);
|
||||
@ -2259,30 +2265,18 @@ implementation
|
||||
Message(asmw_e_64bit_not_supported);
|
||||
{$endif x86_64}
|
||||
end;
|
||||
{$ifdef x86_64}
|
||||
maybewriterex;
|
||||
{$endif x86_64}
|
||||
end;
|
||||
211,
|
||||
213 :
|
||||
begin
|
||||
{$ifdef x86_64}
|
||||
maybewriterex;
|
||||
{$endif x86_64}
|
||||
end;
|
||||
213 : {no action needed};
|
||||
|
||||
212, 241 :
|
||||
begin
|
||||
bytes[0]:=$66;
|
||||
objdata.writebytes(bytes,1);
|
||||
{$ifdef x86_64}
|
||||
maybewriterex;
|
||||
{$endif x86_64}
|
||||
end;
|
||||
214 :
|
||||
begin
|
||||
{$ifdef x86_64}
|
||||
maybewriterex;
|
||||
{$else x86_64}
|
||||
{$ifndef x86_64}
|
||||
Message(asmw_e_64bit_not_supported);
|
||||
{$endif x86_64}
|
||||
end;
|
||||
@ -2290,17 +2284,11 @@ implementation
|
||||
begin
|
||||
bytes[0]:=$f3;
|
||||
objdata.writebytes(bytes,1);
|
||||
{$ifdef x86_64}
|
||||
maybewriterex;
|
||||
{$endif x86_64}
|
||||
end;
|
||||
220 :
|
||||
begin
|
||||
bytes[0]:=$f2;
|
||||
objdata.writebytes(bytes,1);
|
||||
{$ifdef x86_64}
|
||||
maybewriterex;
|
||||
{$endif x86_64}
|
||||
end;
|
||||
221:
|
||||
;
|
||||
@ -2309,11 +2297,7 @@ implementation
|
||||
217,218 :
|
||||
begin
|
||||
{ these are dissambler hints or 32 bit prefixes which
|
||||
are not needed
|
||||
It's useful to write rex :) (FK) }
|
||||
{$ifdef x86_64}
|
||||
maybewriterex;
|
||||
{$endif x86_64}
|
||||
are not needed }
|
||||
end;
|
||||
31,
|
||||
48,49,50 :
|
||||
|
Loading…
Reference in New Issue
Block a user