|
@@ -4,23 +4,38 @@
|
|
|
{ Submitted by "Maxim Voronov" on 2002-10-03 }
|
|
|
{ e-mail: [email protected] }
|
|
|
|
|
|
+Program test;
|
|
|
+
|
|
|
{$asmmode intel}
|
|
|
+ Function GetXminusYintel(x,y : extended):extended; assembler;
|
|
|
+ asm
|
|
|
+ fld x
|
|
|
+ fld y
|
|
|
+ fsubp st(1),st(0)
|
|
|
+ end;
|
|
|
|
|
|
- Function TestProc:single;
|
|
|
- begin
|
|
|
+{$asmmode att}
|
|
|
+ Function GetXminusYatt(x,y : extended):extended; assembler;
|
|
|
asm
|
|
|
- push eax
|
|
|
- fldz
|
|
|
- fldz
|
|
|
- fldz
|
|
|
- fsubp st(2),st(0)
|
|
|
- fstp st(0)
|
|
|
- pop eax
|
|
|
+ fld y
|
|
|
+ fld x
|
|
|
+ fsubp %st,%st(1)
|
|
|
end;
|
|
|
- end;
|
|
|
+
|
|
|
+ var
|
|
|
+ eatt,eintel : extended;
|
|
|
|
|
|
Begin
|
|
|
writeln;
|
|
|
- writeln(TestProc);
|
|
|
+
|
|
|
+ eintel:= GetXminusYintel(2.0,1.0);
|
|
|
+ writeln(eintel);
|
|
|
+ eatt:= GetXminusYatt(2.0,1.0);
|
|
|
+ writeln(eatt);
|
|
|
+ if eintel<>eatt then
|
|
|
+ begin
|
|
|
+ writeln('intel fsubp is not translated properly into fsubrp');
|
|
|
+ halt(1);
|
|
|
+ end;
|
|
|
End.
|
|
|
|