Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.153 Beiträge
 
Delphi 12 Athens
 
#11

Re: Rgb mittels Asm darstellen

  Alt 7. Mai 2009, 10:09
Das PUSH ECX gehört zum Standardverhallten des Compilers.

Der automatisch erzeugte Eintritts- und Austrittscode:
Delphi-Quellcode:
PUSH EBP // Vorhanden wenn Locals <> 0 oder Params <> 0
MOV EBP, ESP // Vorhanden wenn Locals <> 0 oder Params <> 0
SUB ESP, Locals // Vorhanden wenn Locals <> 0
PUSH ECX // -
...
MOV EAX, [EBP-4] // Vorhanden wenn nachdem &Result etwas zugewiesen wurde auch noch EAX etwas zugewiesen
                        // wird, in diesem Fall wird für &Result [EBP-4] statt EAX verwendet - wenn Result <= Integer
POP ECX // -
MOV ESP, EBP // Vorhanden wenn Locals <> 0
POP EBP // Vorhanden wenn Locals <> 0 oder Params <> 0
RET Params // Immer vorhanden
Standardmäßig sind, laut Intel-Sepzifikation, EAX, EDX und ECX, sowie die Statusregister frei verfügbar
und alle anderen Register müssen nach der Prozedur/Funktion wieder hergestellt werden.

Allerdings verwendet Delphi das ECX intern für eigene Dinge, weßhalb es dieses sicherheitshalber selber nochmal sichert, da der Programmierer es (laut Spec) ja nicht selber machen muß.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat