Delphi-PRAXiS
Seite 8 von 8   « Erste     678   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   [Optimiert] Explode Prozedur - Reloaded (Ersatz für CodeLib) (https://www.delphipraxis.net/82268-%5Boptimiert%5D-explode-prozedur-reloaded-ersatz-fuer-codelib.html)

Christian Seehase 17. Aug 2010 19:35

AW: [Optimiert] Explode Prozedur - Reloaded (Ersatz für CodeLib)
 
Zitat:

Zitat von himitsu (Beitrag 1042626)
Delphi lagert Result (falls es wirklich in EAX oder EAX+EDX zurückgegeben wird) notfalls auf ein anderes Register oder den Stack aus ... blockiert wird also nichts. :-D

Sicher, wird dann, nach Möglichkeit, auf andere Speicherorte ausgewichen, aber da EAX öfter benötigt wird, kann das den resultierenden Objectcode negativ beeinflussen. ;-)

himitsu 17. Aug 2010 19:46

AW: [Optimiert] Explode Prozedur - Reloaded (Ersatz für CodeLib)
 
Delphi lagert es nur einmal aus und es wird dann vorm RET auf EAX kopiert.
Result wird in soeinem Fall einfach wie eine lokale Variable behandelt und erst zum Schluß als "Result" gesetzt.

Es sollte also nicht unbedingt extreme Einbusen geben.

Code:
function Test: Integer;
begin
  Result := 123;
  asm mov eax, 789; end;
end;

mov edx,$0000007b // Result := 123;
mov eax,$00000315  // asm mov eax, 789; end;
mov eax,edx       // end;
ret


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:37 Uhr.
Seite 8 von 8   « Erste     678   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz