Einzelnen Beitrag anzeigen

Dax
(Gast)

n/a Beiträge
 
#6

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

  Alt 25. Feb 2005, 13: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