[fpc-pascal] Branch table
Marco Borsari
borsa77 at libero.it
Mon Aug 27 09:51:54 CEST 2018
On Sun, 26 Aug 2018 18:32:29 +0200
Florian Klämpfl <florian at freepascal.org> wrote:
> Am 26.08.2018 um 11:43 schrieb Giuliano Colla:
> > Il 23/08/2018 11:34, Marco Borsari via fpc-pascal ha scritto:
> >
> >> It would be for the Wirth optimization in the access of an array,
> >> when the index is 0 or 1, allowing the elimination of a multiplication.
> >
> > I'm afraid that this sort of optimization is rather outdated, and doesn't take into account a number of factors which
> > make modern processors behave quite differently from old times ones.
>
> Multiplication is much less expensive then a jmp in most cases on today's CPUs.
>
> It is even the other way round, it is often useful to replace an if statement by a multiplication like:
>
> if a>b then
> Inc(c,d);
>
> can be replaced on modern CPUs by
>
> Inc(c,d*ord(a>b));
Ah I see, anyway I did not think that, as Giuliano said, beacuse of alignment of
array element, the multiplication is already substituded by a shift, and the essence
of a branch table becomes superflous. Thank you for your time,
Marco
More information about the fpc-pascal
mailing list