That seems fair. Thank you for your answer. I'm still learning about the nuances of branch prediction and the like.
On Tue 29/05/18 21:27 , Florian Klämpfl [email protected] sent: > Am 28.05.2018 um 01:55 schrieb J. Gareth Moreton: > > > > > > In this case, the ".balign" hint adds > 2 bytes to pad the loop. However, my question is this... why > > does it immediately jump to the end of the loop > to check the condition (which is very likely to be > > true on the first iteration), only to jump to > the beginning again? > > > Several reasons: > > - it is not that easy to find a heuristics when the condition should be > checked twice > - two conditional jumps waste an extra branch prediction table entry > > - bigger code, higher cache usage > > > > Weigthing these reasons against the little overhead of an extra > unconditional jump, we decided to > use the currently used code generation strategy. > > __________________________________________ _____ > > fpc-devel maillist - fpc- [email protected] > http://lists.freepascal.org/cgi- bin/mailman/listinfo/fpc-devel > > > > _______________________________________________ fpc-devel maillist - [email protected] http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel
