Einzelnen Beitrag anzeigen

KFAF

Registriert seit: 5. Mai 2011
12 Beiträge
 
Delphi XE3 Professional
 
#1

ASM Pointer Dereferenzierung

  Alt 11. Jan 2014, 20:04
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
  Mit Zitat antworten Zitat