Pour des besoins de portabilité de code pour Firemonkey, j’ai eu besoin de transcrire la fonction assembleur Intel SAR en son équivalent en Pascal / Delphi.
Elle fonctionne aussi avec la VCL.
Vous trouverez un exemple de son utilisation dans les programmes Texture et FT3D.
Voici la fonction sous Delphi / FMX qui donne les même résultat en sortie que la fonction SAR :
function Sar(const AValue: integer; const AShift: Byte): Integer; begin if AValue < 0 then Result := not (not AValue shr AShift) else Result := AValue shr AShift; end; |