Показать сообщение отдельно
  #3  
Старый 27.05.2013, 15:54
icWasya icWasya вне форума
Местный
 
Регистрация: 09.11.2010
Сообщения: 499
Репутация: 10
По умолчанию

Ну если можно использовать 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;
Ответить с цитированием