Duff's device
The most dramatic use yet seen of fall through in C, invented by Tom Duff when
he was at Lucasfilm. Trying to bum all the instructions he could out of an inner
loop that copied data serially onto an output port, he decided to unroll it. He
then realised that the unrolled version could be implemented by *interlacing*
the structures of a switch and a loop:
register n = (count + 7) / 8; /* count > 0 assumed */
switch (count % 8)
{
case 0: do { *to = *from++;
case 7: *to = *from++;
case 6: *to = *from++;
case 5: *to = *from++;
case 4: *to = *from++;
case 3: *to = *from++;
case 2: *to = *from++;
case 1: *to = *from++;
} while (--n > 0);
}
Shocking though it appears to all who encounter it for the first time, the
device is actually perfectly valid, legal C. C's
default fall through in case statements has long
been its most controversial single feature; Duff
observed that "This code forms some sort of argument
in that debate, but I'm not sure whether it's for or
against."
[For maximal obscurity, the outermost pair of braces above could be actually be
removed - GLS]
[Jargon File]
(2001-06-22)
Nearby terms:
Dual Tone Multi Frequency « duck typing « DUEL «
Duff's device » dumbed down » dumb terminal »
dump
|