Einzelnen Beitrag anzeigen

tommie-lie
(Gast)

n/a Beiträge
 
#16

Re: Warum läßt Delphi das zu: Pointertyp(pBla).Member???

  Alt 16. Aug 2005, 12:40
Zitat von negaH:
Delphi-Quellcode:
asm
    MOV EAX,[EDX]
    MOV EAX,[EDX].Member
end;
In beiden Fällen steht in EDX ein Zeiger, die Derefernzierung erfolgt IMPLIZIT beim Zugriff auf den Zeiger.
Ich mag mich irren, aber erfolgt der Zugriff nicht explizit durch die eckigen Klammern? Würde stattdessen
Code:
MOV EAX, EDX
stehen, würde die Adresse nach EAX kopiert werden, bei deinem
Code:
MOV EAX, [EDX]
die vier Byte, die an der Speicherstelle stehen, auf die die Adresse in EDX zeigt.

Zitat von negaH:
Es ist egal ob EDX nun einen Zeiger auf einen allozierten Speicherbereich enthält, oder Self eines Objektes, oder ein stinknormaler Record im Stack ist.
Ja, weil die beiden letzteren auch nur ein Sonderfall des ersteren sind: ein allozierter Speicherbereich. Der Stack ist in Assembler doch auch nur ein Speicherbereich, auf den das Stackregister zeigt, nur daß ich mit POP* und PUSH* besondere Zugriffsmethoden darauf habe.
  Mit Zitat antworten Zitat