Hallo,
in der Dephi – Hilfe steht das man lange Strings im EAX – Register wieder zurückgibt.
Zitat:
Funktionsergebnisse
Assembler-Funktionen liefern ihre Ergebnisse folgendermaßen zurück:
• Ordinale Werte werden in AL (8-Bit-Werte), AX (16-Bit-Werte) oder EAX (32-Bit- Werte) zurückgeliefert.
• Reelle Werte werden in ST(0) über den Register-Stack des Coprozessors zurückgegeben. (Currency-Werte werden mit dem Faktor 10000 skaliert.)
• Zeiger einschließlich langer Strings werden in EAX zurückgeliefert.
• Kurze Strings und Varianten werden an die temporären Adresse zurückgegeben, auf die @Result zeigt.
z.B.:
Delphi-Quellcode:
function strRueckgabe (s: PChar) :
String;
ASM
… Mach was mit s
in ASM
Functionsergebnis
in EAX
END;
Mir ist jetzt nur nicht klar, wie ich den langen String in EAX bekomme (Also der Pointer), muss ich dafür in der Function selber den Speicherplatz reservieren, oder hat ein anderer Register die Anfangsadresse?
Bis bald Chemiker
wer gesund ist hat 1000 wünsche wer krank ist nur einen.