Zitat von
Quake:
Onlinehilfe :
Zitat:
Registerverwendung
Im Allgemeinen sind die Regeln für die Verwendung von Registern in einer
asm-Anweisung identisch mit denjenigen für eine external-Prozedur oder -Funktion. In einer
asm-Anweisung muss der Inhalt der Register EDI, ESI, ESP, EBP und EBX erhalten bleiben, während die Register EAX, ECX und EDX beliebig geändert werden können. Beim Eintritt in eine
asm-Anweisung zeigt EBP auf den aktuellen Stackframe, ESP auf den Beginn des Stacks. Zu Beginn der Ausführung einer
asm-Anweisung ist der Registerinhalt unbekannt. Eine Ausnahme bilden die Register ESP und EBP.
Dann will ich nichts gesagt haben. In dem Fall sollte es gehen. Ich habe nur eben kein Delphi installiert.
Zitat von
Quake:
Zitat:
Überflüssig wäre das ganze hinundherkopieren, weil du das bei dem Aufruf einer anderen Funktion nicht brauchst.
Dann kannst du mir auch bestimmt erklären, wieviel Zeit Verschwendet wird, bei einmal eine Variable hin und her kopieren im Gegensatz zu einem Funktionsaufruf.
Nein, kann ich nicht, weil das vom Prozessor und da vom Modell usw. abhängt. Das ändert sich ständig, weshalb sogenannte "Optimierungen" mit Assembler meist gröbster Unsinn sind. Im Falle von BSWAP haben wir eine Ausnahme, weil dort eine Instruktion die Arbeit von mehreren Zeilen HLL-Code macht.
Zitat von
Quake:
Was macht Delphi wohl automatisch wenn eine Funktion aufgerufen wird? Ich gehe mal davon aus, zum einen Unmengen von Daten hin und her kopieren, und zum anderen eine Bereichsüberprüfung.
Und genau da irrst du bei einer Funktion, die kein begin/end, sondern
asm/end hat. Dort passiert nämlich nichts dergleichen.