Ну если можно использовать SwapDWord, то наверно так -
Код:
SwapSingle(X:Single):Single;
var
R:record
case boolean of
true: (Y:Single);
false: (Z:Dword);
end;
begin
R.Y:=X;
R.Z:=SwapDWorD(R.Z);
Result:=R.Y;
end;
нету прямых команд пересылки регистр CPU<->регистр FPU
ну и до кучи
Код:
SwapDouble(X:Double):Double;
var
R:record
case boolean of
true: (Y:Double);
false: (Z1,Z2:Dword);
end;
Z:Dword;
begin
R.Y:=X;
Z:=SwapDWorD(R.Z1);
R.Z1:=SwapDWorD(R.Z2);
R.Z2:=Z;
Result:=R.Y;
end;