AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi ASM - Compiler erstellt überflüssigen Code?
Thema durchsuchen
Ansicht
Themen-Optionen

ASM - Compiler erstellt überflüssigen Code?

Ein Thema von dizzy · begonnen am 25. Feb 2005 · letzter Beitrag vom 25. Feb 2005
Antwort Antwort
Dax
(Gast)

n/a Beiträge
 
#1

Re: ASM - Compiler erstellt überflüssigen Code?

  Alt 25. Feb 2005, 14:59
Das ist schon eine nahezu perfekte Optimierung. Die umrahmten Bytes sind einfach da, das ist Absicht. Die nächste Anweisung ist so an einer DWORD-Adresse, was Sprünge oder Calls einen Speedvorteil bringen kann. Mach mal einen Test: Nimm dir die Funktion
Delphi-Quellcode:
procedure Test;
asm
  nop
  inc eax
  ret
end;
Und teste sie durch, indem du einmal CALL Test aufrufst und im anderen Fall eben so:
Delphi-Quellcode:
asm
  lea edx, Test
  inc edx
end;
// Weiterer Testcode
asm
  call edx
end;
Beides führt den selben Code aus, aber nur CALL Test wird direkt eine DWORD-Adresse aufrufen. Dürfte also schneller sein

PS: Ich hab's nicht getestet. Noch nicht

@retnyg: Wenn es Variablen wären (die drei umrahmten Bytes), müsste das Programm schreibrechte auf die Daten um EIP haben. Ist aber nicht der Fall, also können es keine Variablen sein.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz