Einzelnen Beitrag anzeigen

Reinhard Kern

Registriert seit: 22. Okt 2006
772 Beiträge
 
#5

Re: Objekte in Assembler ansprechen -- Aufbau im Speicher

  Alt 5. Nov 2006, 12:13
Zitat von avh:
Danke, das hat schonmal gut geklappt! Auch das mit dem Debugger!

Jetzt Mühe ich mich noch etwas mit Strings herum. Wie mache ich folgendes:

Delphi-Quellcode:
function test.hello( x:someType ): string;
asm
  // hello := 'Hello World!';
end;
Der Funktionsrückgabewert muss ja am Ende nach EAX. Also ein 32 Bit Pointer (sowohl bei Short- als auch bei AnsiStrings -- korrigiert mich wenn ich mich irre). Ich muss also Speicher allokieren und den entsprechend füllen. Wie geht das? Ich kann mir ja nicht einfach eine Adresse ausdenken. Und zu beginn steht in EAX ja der Parameter (bzw. Self).
Hallo,

die Speicherverwaltung ist zwar auch von Assembler aus möglich (man kann prinzipiell alles in Assembler schreiben, auch ein komplettes Vista oder Office), kann aber sehr komplex werden, ich würde das daher immer schon in delphi machen - also einen String deklarieren und was reinschreiben und das dann der Assembler-Routine als Parameter übergeben. Dann ist im Assembler nur ein Pointer zu verarbeiten.

Gruss Reinhard
  Mit Zitat antworten Zitat