Hallo Delphi Praxis!
Ich habe folgendes Problem:
Delphi-Quellcode:
procedure Foo(A : Pointer);
assembler;
var
Test : Pointer;
asm
MOV Test, A
.
.
.
MOV EAX, [Test]
end;
Obwohl der Wert von Test korrekt ist, liefert MOV in EAX lediglich den Wert des Zeigers. Da Test gleichbedeutend mit [ESP - 4] ist, dachte ich , man müsste [[TEST]] schreiben. Das hat aber genau die selbe Wirkung.
Es funktioniert allerdings, wenn ich zuerst Test in ein Register lade, und anschließend statt [Test] [Register-Name] einsetzte. Ich habe aber kein Register mehr frei, zumindest nicht, ohne noch x-tausend stack Operationen an allen Stellen einzufügen.
Wäre wirklich toll, wenn mich mal jemand darüber aufklären könnte!
Mit freundlichen Grüßen zum neuen Jahr
KFAFSP