Exception de virgule flottante : Faute de pile

De RAD Studio
Aller à : navigation, rechercher

Remonter à Exceptions de virgule flottante

La pile a virgule flottante a débordé. Cette erreur peut être due à un code assembleur qui a utilisé trop de registres ou à une mauvaise déclaration d'une fonction à virgule flottante.

Exemple (à titre d'illustration):

program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var
  I: Integer;
  S: Single;

begin
  try
    // L'instruction FLD charge une valeur réelle dans la pile FPU
    for I := 0 to 32 do
    begin
      asm
        FLD S
      end;
    end;

  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;

end.

Ces erreurs de virgule flottante peuvent être évitées en définissant le mot de contrôle FPU. Voir la procédure SetExceptionMask :

    SetExceptionMask([exInvalidOp]);