Why does the compiler touch ebx here? (stackframes off, optimization on)

Why does the compiler touch ebx here? (stackframes off, optimization on)

function GetHello: string
begin
  Result := 'Hello';
end;

assembler generated:

Project48.dpr.25: begin
0041A13C 53               push ebx
0041A13D 8BD8             mov ebx,eax
Project48.dpr.26: Result := 'Hello';
0041A13F 8BC3             mov eax,ebx
0041A141 BA5CA14100       mov edx,$0041a15c
0041A146 E8B5D0FEFF       call @UStrAsg
Project48.dpr.27: end;
0041A14B 5B               pop ebx
0041A14C C3               ret

Comments