Wo schlußendlich die "Result-Variable herkommt, ist also unklar.
Das ist keineswegs unklar, denn wie du zuvor richtigerweise ausgeführt hast, ist das ein var Parameter.
Im Fall einer Zuweisung ist es die Variable, welcher du zuweist. Andernfalls eine vom Compiler erzeugte Variable.
Das kann man sich auch in der CPU Ansicht anschauen.
Im von dir gezeigten Beispiel wird dort s übergeben
Code:
s := Test;
8D45F4 lea eax,[ebp-$0c]
E8A4FFFFFF call Test
Weist man auf etwas zu, was nicht als var Parameter übergeben werden kann (z.b. eine Property), dann wird die compiler erzeugte Variable benutzt:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var
i: Integer;
s: string;
begin
for i := 0 to 2 do
Caption := Test;
ShowMessage(s);
end;
Code:
Caption := Test;
8D45EC lea eax,[ebp-$14]
E8A1FFFFFF call Test
8B55EC mov edx,[ebp-$14]
8B45FC mov eax,[ebp-$04]
E8C662FBFF call TControl.SetText