Hallo Hagen!
Vielen Dank für Deine Ausführungen. Es ist immer wieder ein Genuss, Deine Beträge zu studieren.
Du hast folgendes Beispiel angeführt, wobei ich ehrlich gesagt noch nicht ganz verstehe, was der Code bezwecken soll.
Delphi-Quellcode:
type
TMyObject =
class
FProc:
procedure(
const Data; DataSize: Integer)
of object;
end;
procedure TMyObject.Calc(
const Data; DataSize: Integer);
assembler;
asm
JMP DWord Ptr [EAX].FProc.TMethod.Code
// in D7
JMP TMethod([EAX].FProc).Code
// bis D7 möglich
end;
Wieso verwendest Du den Operanten JMP und nicht CALL? Es geht doch darum, eine variable Methode zur Berechnung zu implementieren; ein für meine Begriffe sehr elegantes Programmierkonstrukt. Aber wie es geht nach dem Sprung zur Adresse Code und der Abarbeitung der Fkt weiter? Oder wird hier einfach der Stackframe der Methode Calc genutzt? Bitte um Aufklärung!
Viele Grüsse
OLLI