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.