Einzelnen Beitrag anzeigen

Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#1

brauche kleine Hilfe in ASM, Flaschenhals

  Alt 22. Jun 2006, 05:10
ich habe hier eine Funktion, die mein programm irgendwie bremst.
Wenn ich sie testweise abschalte, dann bin ich 20-30 prozent schneller, und das in einem komplexen Verarbeiten von noch viel mehr Funktionen und proceduren.

kann man das in ASM vielleicht schneller gestalten oder lässt sich da nicht mehr soviel rausholen ?
Habe leider keine Ahnung von Assembler. Deshalb wollte ich Euch mal um Rat fragen.

Vielen Dank !

Delphi-Quellcode:
function SmallToDouble(CodZahl : Integer): Double;
var Scale : Integer;
begin
  // Entschlüsseln !!
  // Maske := 3; // 0000 0000 0000 0000 0000 0000 0000 0011

   case ( (CodZahl shr 29) and 3) of
   0 : Scale := 100;
   1 : Scale := 10000;
   2 : Scale := 1000000;
   else
     Scale := 1;
   end;

   // löschen der Bits
   // MaskePositiv := $9FFFFFFF; // 1001 1111 1111 1111 1111 1111 1111 1111
   // MaskeNegativ := $60000000; // 0110 0000 0000 0000 0000 0000 0000 0000


   if CodZahl >= 0
     then CodZahl := CodZahl and $9FFFFFFF // Bits müssen Null sein
       else CodZahl := CodZahl or $60000000; // Bits müssen Eins sein
   Result := CodZahl / Scale;
end;
Phantasie ist etwas, was sich manche Leute gar nicht vorstellen können.
  Mit Zitat antworten Zitat