Korrekt, da FMask ein Zeiger ist der im "Record" eines Objectes steht, musst du selber dereferenzieren. Ein Machinenbefehl zum direkten derefernezieren mehrerer Referenzen existiert dafür nicht. Es liegt also nicht an Delphi oder Assembler, sondern einfach an den Möglichkeiten der CPU.
Desweiteren nutze nicht deine obige Art des "Typcast" in
ASM. Besser ist:
Delphi-Quellcode:
asm
MOV EBX,[EAX].TMyClass.FMask
CMP EAX,[EBX].TMaskClass.FRect.Left
end;
Ab D7 ist deine obige Syntax ungültig.
Gruß Hagen