Entwickler-Ecke

Sonstiges (Delphi) - result := 0 am anfang geht, am ende nicht


hui1991 - Mi 25.02.09 18:58
Titel: result := 0 am anfang geht, am ende nicht
Hi,

ich hab etz mich gewundert warum mein Code nicht funktioniert, bzw. warum die IF-Abfrage wegoptimiert wurde.
Den Code seht ihr im Anhang.
Ist schon komisch, dass nur, weil am schluss nochmal result := 0;, obwohl das vorherige exit; diese überspringen würde.
Bug im optimierer?

MfG


jaenicke - Mi 25.02.09 19:33

Das ist kein Bug, der Quelltext sollte trotzdem korrekt funktionieren. Der Compiler nimmt glaube ich einfach Result als Schleifenvariable sozusagen. Und deshalb muss an der Stelle nix mehr passieren, diese Zeilen gibt es praktisch nicht mehr nach der Optimierung.

Schau in den Assemblercode an der Stelle (Haltepunkt aufs if und dann Strg + Shift + C), dann wirst du sehen, dass (vermute ich) in EBX gezählt wird und das Register am Ende ggf. auf 0 gesetzt wird (mit xor).

Abtippen um das zu überprüfen wollte ich den Code jetzt nicht.^^


nagel - Mi 25.02.09 20:11

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:

Abtippen um das zu überprüfen wollte ich den Code jetzt nicht.^^

OCR? :D


jaenicke - Mi 25.02.09 20:14

user profile iconnagel hat folgendes geschrieben Zum zitierten Posting springen:
OCR? :D
Keine Lust, ich bin mir viel zu sicher, dass es so ist. ;-)
Wenns wirklich doch nicht stimmt, dann würde er es ja sagen, dann kann ichs immer noch testen. ;-)