Von inline Assembly würde ich abraten. Ist zwar tatsächlich schneller, als die vom Delphi Compiler ziemlich hirnlos generierte Übersetzung des Pascal Äquivalents, aber:
- es lässt sich deutlich schlechter lesen
- es ist verdammt Fehler-anfällig und schlecht zu warten
- 64-Bit unterstützt kein inline Assembly
Wenn du es doch umbedingt verwenden willst, dann solltest du dran denken volatile Register zu preserven:
Delphi-Quellcode:
asm
push eax
..
pop eax
end;
In der Standard Calling-Convention von Delphi wird EAX zwar final als Return-Value verwendet, aber theoretisch steht es dem Compiler frei auch mitten in der Funktion irgendwelche Werte in EAX abzulegen, die vielleicht nach deinem Assembler Block nochmal gebraucht werden.