Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu
Online

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

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

  Alt 19. Jan 2008, 02: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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat