Einzelnen Beitrag anzeigen

Olli
(Gast)

n/a Beiträge
 
#32

Re: Verdrehte Bits (Wilde Pointereien)

  Alt 2. Sep 2007, 20:36
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.
  Mit Zitat antworten Zitat