|
@@ -57,6 +57,8 @@ type
|
|
procedure CheckOperandSizes;
|
|
procedure CheckOperandSizes;
|
|
procedure CheckNonCommutativeOpcodes;
|
|
procedure CheckNonCommutativeOpcodes;
|
|
procedure SwapOperands;
|
|
procedure SwapOperands;
|
|
|
|
+ { Additional actions required by specific reader }
|
|
|
|
+ procedure FixupOpcode;virtual;
|
|
{ opcode adding }
|
|
{ opcode adding }
|
|
function ConcatInstruction(p : TAsmList) : tai;override;
|
|
function ConcatInstruction(p : TAsmList) : tai;override;
|
|
end;
|
|
end;
|
|
@@ -535,6 +537,11 @@ begin
|
|
opcode:=A_FDIVRP;
|
|
opcode:=A_FDIVRP;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
+procedure Tx86Instruction.FixupOpcode;
|
|
|
|
+begin
|
|
|
|
+ { does nothing by default }
|
|
|
|
+end;
|
|
|
|
+
|
|
{*****************************************************************************
|
|
{*****************************************************************************
|
|
opcode Adding
|
|
opcode Adding
|
|
*****************************************************************************}
|
|
*****************************************************************************}
|
|
@@ -623,18 +630,6 @@ begin
|
|
siz:=S_FAR;
|
|
siz:=S_FAR;
|
|
end;
|
|
end;
|
|
|
|
|
|
-{$ifdef x86_64}
|
|
|
|
- { Convert movq with at least one general registers or constant to a mov instruction }
|
|
|
|
- if (opcode=A_MOVQ) and
|
|
|
|
- (ops=2) and
|
|
|
|
- (
|
|
|
|
- (operands[1].opr.typ=OPR_REGISTER) or
|
|
|
|
- (operands[2].opr.typ=OPR_REGISTER) or
|
|
|
|
- (operands[1].opr.typ=OPR_CONSTANT)
|
|
|
|
- ) then
|
|
|
|
- opcode:=A_MOV;
|
|
|
|
-{$endif x86_64}
|
|
|
|
-
|
|
|
|
{ GNU AS interprets FDIV without operand differently
|
|
{ GNU AS interprets FDIV without operand differently
|
|
for version 2.9.1 and 2.10
|
|
for version 2.9.1 and 2.10
|
|
we add explicit args to it !! }
|
|
we add explicit args to it !! }
|