Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.410 Beiträge
 
Delphi 12 Athens
 
#6

Re: [ASM] Lange Strings als Function - Wert zurückgeben

  Alt 19. Jan 2008, 01:02
dein
Delphi-Quellcode:
function ASM_StringTest(s: String):String;
begin
   Result:= s;
end;
sieht in ASM virtuell so aus
Delphi-Quellcode:
Function ASM_StringTest(S: String; In Result: String): String;
// das "In Result: String" wird sozusagen vom Compiler hinzugefügt, um
// Stringvariablen und andere dynamische Arrays optimaler verwalten zu können.
ASM
  // EAX = Refferenz auf S
  // EDX = Refferenz auf Result (vorinitialisiert)

  // EDX bearbeiten, z.B. S zuweisen

  MOV EAX, ...{EDX}  // und zum Schluß die Refferenz in EAX zurückgeben
End;


Bei Varianten mit festen Speichern, wie in Beitrag #4, braucht man sich dagegen um Speicherresservierung garkeine Sorgen zu machen ... S als PChar interpretieren (bei 'nem reinem Lesezugriff ist das möglich), der Puffer braucht nicht verwaltet zu werden und um den Rest kümmert sich Delphi.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat