Il 14/08/2018 12:37, Martok ha scritto:
label label0,label1,label2,{...,}afterend;
const table: array [lowestcaselabel..highestcaselabel] of CodePointer =
(@label0, @label1, @label2{,...});
if (xhighestcaselabel) then
goto @afterend;
goto table[x];
label0:
code;
goto afterend;
label1:
M
Am 14.08.2018 um 11:27 schrieb Marco Borsari via fpc-devel:
> From what I can read from Wikipedia, every compound of the case is
> enclosed in
> a procedure (or in a function, as you said the table is typed), declared
> with
> nostackframe, and called by an array of index, right?
The blocks are
Il 14/08/2018 10:00, Martok ha scritto:
array of index = array of pointers, sorry
___
fpc-devel maillist - fpc-devel@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel
Il 14/08/2018 10:00, Martok ha scritto:
What Kit said, but a correction: the threshold is not 50, it is 19. And what is
generated is not technically a jump table, but a
typed dispatch table.
From what I can read from Wikipedia, every compound of the case is
enclosed in
a procedure (or in a fu
I stand corrected - thanks.
*makes note to research more weird and wondeful things in the compiler!*
Gareth aka. Kit
On Tue 14/08/18 09:00 , Martok list...@martoks-place.de sent:
Hi,
> I would need a clarification about the way the case statement is
> translated into assembler by FPC.
Hi,
> I would need a clarification about the way the case statement is
> translated into assembler by FPC. When the list of alternatives is
> continous, does the compiler generate a jump table?
What Kit said, but a correction: the threshold is not 50, it is 19. And what is
generated is not tech
Il 13/08/2018 16:29, J. Gareth Moreton ha scritto:
I haven't explored it too deeply myself, but from what I understand, a
jump table is only generated if there are a large number of branches
(over 50). If it's just a handful of branches, it simply subtracts
values from the input corresponding to
I haven't explored it too deeply myself, but from what I understand, a
jump table is only generated if there are a large number of branches (over
50). If it's just a handful of branches, it simply subtracts values from
the input corresponding to the differences between the case labels, and
jumpin
Hello,
I would need a clarification about the way the case statement is
translated into assembler by FPC. When the list of alternatives is
continous, does the compiler generate a jump table? And if yes, there is
some conditions for which a fall-through is performed anyway?
Thank you, Marco Bor