[fpc-devel] Kit's ambitions!

J. Gareth Moreton gareth at moreton-family.com
Tue Jun 12 23:27:13 CEST 2018

 Ideally yes, but this occurs after peephole optimisations where all of the
register allocations have already been made.  Doing the peephole and deep
optimisations while the registers are still in a virtual state would be
better overall, but may require a huge overhaul of the compiler that might
be asking for too much trouble.  There's also the issue that some commands
only work with certain registers, and optimisations have to be careful of
that fact.


 On Tue 12/06/18 22:45 , nickysn at gmail.com sent:
 On Mon, 2018-06-11 at 21:07 +0100, J. Gareth Moreton wrote: 
 > Thanks David, 
 > I'm still learning some of the nuances of the Intel and AMD 
 > processors, but most of it is just logical analysis. Admittedly my 
 > main drive has been to shrink down the size of the binary, since 
 > Delphi and Free Pascal have always been a little bit bloated in 
 > comparison. Not that it is necessarily a bad thing, but saving space 
 > without sacrificing performance can only be a good thing, especially 
 > for those with limited bandwidth or for saving those few precious 
 > bytes when burning files to a CD or DVD. 
 > There have been a few instances in the compiled compiler (my main 
 > test case) where an entire register is freed up due to my deep 
 > optimisation, and that means the corresponding "push" and "pop" at 
 > either end of the procedure can be removed (along with the 
 > corresponding stack unwinding information), although I haven't 
 > started programming that yet. 

 Isn't it better to perform this optimization before register 
 allocation. Then, when this happens, the corresponding "push" and "pop" 
 wouldn't even be put by the compiler, because the register wouldn't 
 have to be spilled. 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freepascal.org/pipermail/fpc-devel/attachments/20180612/8077e99d/attachment.html>

More information about the fpc-devel mailing list