[fpc-devel] Pure function Wiki page
J. Gareth Moreton
gareth at moreton-family.com
Mon Jul 9 03:33:10 CEST 2018
That's something for future research. Initially I just want to get pure
Pascal procedures working, and that's the most important since it's
cross-platform. Analysing assembler routines will require a different
kind of interpretation, and it will likely involve only allowing a certain
subset of opcodes and dropping out if it spots a memory operand that
doesn't point to the local stack (unless it's a LEA instruction).
For the first iteration, specifying 'pure' on a pure assembler routine
will probably just throw a warning and ignore the directive, much like what
currently happens with 'inline'. I can see the use of pure, pure
assembler routines (that's going to get confusing very quickly!) because of
operations such as x86's ROR and BSR that don't have direct Pascal
equivalents.
Gareth
On Mon 09/07/18 03:07 , "Dmitry Boyarintsev" skalogryz.lists at gmail.com
sent:
On Sun, Jul 8, 2018 at 8:15 PM, J. Gareth Moreton wrote:
Yes, if any parameters are variables, then the function is not
evaluated. My intention is that the purity of a function is only
determined when it comes to evaluating it in an expression, but because of
how complex functions can become, the "pure" directive hints to the
compiler that the given function is pure and it should attempt the laborous
task of evaluating it, rather than the opposite approach of attempting to
evaluate all functions with constant actual parameters and potentially
increasing the compilation time by several orders of magnitude (don't
forget it might be attempting to do the same thing with system functions if
the project is undergoing a full build).
if FPC assembler reader powerful enough to analyze and trust assembler
functions marked as pure?
thanks,Dmitry
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freepascal.org/pipermail/fpc-devel/attachments/20180709/4e8d9eab/attachment.html>
More information about the fpc-devel
mailing list