<p>Am 10.11.2015 09:40 schrieb "Jürgen Hestermann" <<a href="mailto:juergen.hestermann@gmx.de">juergen.hestermann@gmx.de</a>>:<br>
><br>
> Am 2015-11-09 um 14:26 schrieb Sven Barth:<br>
>><br>
>><br>
>> > The docs already note that the compiler uses a temporary register<br>
>> > for 'With'.<br>
>> > <a href="http://www.freepascal.org/docs-html/ref/refsu58.html#x155-16500013.2.8">http://www.freepascal.org/docs-html/ref/refsu58.html#x155-16500013.2.8</a><br>
>> > Of course if there is no register left the compiler uses the stack.<br>
>><br>
>> Please note that this is an implementation detail. The point a user should care about is that the expression of the with is evaluated only once (before the block of the with is entered). Everything else is up to the compiler.<br>
>> (I would prefer if it wouldn't be mentioned as is in the documentation)<br>
>><br>
>><br>
> This information is very important IMO.<br>
> The programmer should know which coding has which performance.</p>
<p>Which is solved by saying that the expression is only evaluated once. The user doesn't need to know the detail that the value is kept in a temporary register, because that statement by itself is utterly useless for the user, as on load/store architectures like ARM you /always/ have values in registers if they are worked with and the compiler will happily spill around the contents if necessary.</p>
<p>Regards,<br>
Sven</p>