|
|
|
|
|
|
|
1. The Jargon File (version 4.4.7, 29 Dec 2003) |
Duff's device
n.
The most dramatic use yet seen of fall through in C, invented by Tom Duff
when he was at Lucasfilm. Trying to optimize 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 realized 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.? Duff has discussed the device in
detail at http://www.lysator.liu.se/c/duffs-device.html. Note that the
omission of postfix ++ from *to was intentional (though confusing). Duff's
device can be used to implement memory copy, but the original aim was to
copy values serially into a magic IO register.
[For maximal obscurity, the outermost pair of braces above could actually
be removed ? GLS]
|
2. The Free On-line Dictionary of Computing (30 December 2018) |
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)
|
|
|
|
|
Common Misspellings > |
Duff's device uDuff's device uDff's device DuDff's device uff's device DDuff's device Dfuf's device Dufuf's device Dff's device Duuff's device Dufff's device Duf's device Dufff's device Duf'fs device Duff'fs device Duf's device Dufff's device Duffs' device Duff's' device Duffs device Duff''s device Duff' sdevice Duff's sdevice Duff' device Duff'ss device Duff'sd evice Duff's d evice Duff'sdevice Duff's device Duff's edvice Duff's dedvice Duff's evice Duff's ddevice Duff's dveice Duff's deveice Duff's dvice Duff's deevice Duff's deivce Duff's devivce Duff's deice Duff's devvice Duff's devcie Duff's devicie Duff's devce Duff's deviice Duff's deviec Duff's devicec Duff's devie Duff's devicce Duff's deviece Duff's devic Duff's devicee wuff's device dwuff's device wduff's device euff's device deuff's device eduff's device ruff's device druff's device rduff's device suff's device dsuff's device sduff's device fuff's device dfuff's device fduff's device xuff's device dxuff's device xduff's device cuff's device dcuff's device cduff's device vuff's device dvuff's device vduff's device uff's device d uff's device duff's device D7ff's device Du7ff's device D7uff's device D&ff's device Du&ff's device D&uff's device D8ff's device Du8ff's device D8uff's device Dyff's device Duyff's device Dyuff's device Diff's device Duiff's device Diuff's device Dhff's device Duhff's device Dhuff's device Djff's device Dujff's device Djuff's device Dkff's device Dukff's device Dkuff's device Daff's device Deff's device Doff's device Duee's device Dufee's device Dueef's device Durr's device Dufrr's device Durrf's device Dutt's device Duftt's device Duttf's device Dudd's device Dufdd's device Duddf's device Dugg's device Dufgg's device Duggf's device Ducc's device Dufcc's device Duccf's device Duvv's device Dufvv's device Duvvf's device Dubb's device Dufbb's device Dubbf's device Du 's device Duf 's device Du f's device Duffps device Duff'ps device Duffp's device Duff;s device Duff';s device Duff;'s device Duff.s device Duff'.s device Duff.'s device Duff'q device Duff'sq device Duff'qs device Duff'w device Duff'sw device Duff'ws device Duff'e device Duff'se device Duff'es device Duff'a device Duff'sa device Duff'as device Duff'd device Duff'sd device Duff'ds device Duff'z device Duff'sz device Duff'zs device Duff'x device Duff'sx device Duff'xs device Duff'c device Duff'sc device Duff'cs device Duff' device Duff's device Duff' s device Duff's wevice Duff's dwevice Duff's wdevice Duff's eevice Duff's deevice Duff's edevice Duff's revice Duff's drevice Duff's rdevice Duff's sevice Duff's dsevice Duff's sdevice Duff's fevice Duff's dfevice Duff's fdevice Duff's xevice Duff's dxevice Duff's xdevice Duff's cevice Duff's dcevice Duff's cdevice Duff's vevice Duff's dvevice Duff's vdevice Duff's evice Duff's d evice Duff's device Duff's d3vice Duff's de3vice Duff's d3evice Duff's d#vice Duff's de#vice Duff's d#evice Duff's d4vice Duff's de4vice Duff's d4evice Duff's dwvice Duff's dewvice Duff's dwevice Duff's drvice Duff's dervice Duff's drevice Duff's dsvice Duff's desvice Duff's dsevice Duff's ddvice Duff's dedvice Duff's ddevice Duff's dfvice Duff's defvice Duff's dfevice Duff's davice Duff's divice Duff's dovice Duff's duvice Duff's dedice Duff's devdice Duff's dedvice Duff's defice Duff's devfice Duff's defvice Duff's degice Duff's devgice Duff's degvice Duff's decice Duff's devcice Duff's decvice Duff's debice Duff's devbice Duff's debvice Duff's de ice Duff's dev ice Duff's de vice Duff's dev8ce Duff's devi8ce Duff's dev8ice Duff's dev*ce Duff's devi*ce Duff's dev*ice Duff's dev9ce Duff's devi9ce Duff's dev9ice Duff's devuce Duff's deviuce Duff's devuice Duff's devoce Duff's devioce Duff's devoice Duff's devjce Duff's devijce Duff's devjice Duff's devkce Duff's devikce Duff's devkice Duff's devlce Duff's devilce Duff's devlice Duff's devace Duff's devece Duff's devise Duff's devicse Duff's devisce Duff's devide Duff's devicde Duff's devidce Duff's devife Duff's devicfe Duff's devifce Duff's devixe Duff's devicxe Duff's devixce Duff's devive Duff's devicve Duff's devivce Duff's devi e Duff's devic e Duff's devi ce Duff's devic3 Duff's device3 Duff's devic3e Duff's devic# Duff's device# Duff's devic#e Duff's devic4 Duff's device4 Duff's devic4e Duff's devicw Duff's devicew Duff's devicwe Duff's devicr Duff's devicer Duff's devicre Duff's devics Duff's devices Duff's devicse Duff's devicd Duff's deviced Duff's devicde Duff's devicf Duff's devicef Duff's devicfe Duff's devica Duff's devici Duff's devico Duff's devicu Definition commonly spelled as: Defanition or Defenition, Synonym as: Synonim, Sinonym or Sinonim, Thesaurus as: Thesorus or Thesauris, Dictionary as: Dictionery or Dictionry and Define is usually not misspelled. What does mispell meen? It Meens...
Full Map Index: Å Norway-Am Timan Chad |
Ama United States of America-Audon France |
Audouville-la-Hubert France-Baskil Turkey |
Baskin United States of America-Bindoy Philippines |
Bindoy Philippines-Breuilpont France |
Breukelen Netherlands-Campofelice di Fitalia Italy |
Campofelice di Roccella Italy-Champigny France |
Champigny-en-Beauce France-Colle San Magno Italy |
Colle Sannita Italy-Damulog Philippines |
Damurhuda Bangladesh-Duliāgaon India |
Duliajan No.1 India-Ethridge United States of America |
Étienville France-Frignano Italy |
Frignicourt France-Gouhenans France |
Gouillons France-Hasselbach Germany |
Hasselbach Germany-Hurlock United States of America |
Huron United States of America-Jovellanos Cuba |
Jovellar Philippines-Kirchzell Germany |
Kircubbin United Kingdom-La Gomera Guatemala |
La Gonfrière France-Le Hohwald France |
Le Hommet-dArthenay France-Loma de Gato Philippines |
Loma de Juárez Mexico-Mālpur India |
Mālpura India-Memphis United States of America |
Memphis United States of America-Montería Colombia |
Monteriggioni Italy-Navalilla Spain |
Navalmanzano Spain-Noyelles-lès-Seclin France |
Noyelles-lès-Vermelles France-Pachelma Russia |
Pachgaon India-Piégut-Pluviers France |
Piekary Śląskie Poland-Prilep Macedonia |
Přílepy Czech Republic-Reuil-en-Brie France |
Reuilly France-Şag Romania |
Şag Romania-Saint-Puy France |
Saint-Python France-Santa Rita Panama |
Santa Rita Venezuela-Sewarhi India |
Sewen France-Sparbu Norway |
Spardorf Germany-Tamparan Philippines |
Tampayan Philippines-Tottington United Kingdom |
Tottleben Germany-Valdivia Chile |
Valdivia Colombia-Villeneuve-le-Roi France |
Villeneuve-lès-Avignon France-White City United States of America |
White City Canada-Żywiec Poland |
|
Most Popular Searches: Define Misanthrope, Define Pulchritudinous, Define Happy, Define Veracity, Define Cornucopia, Define Almuerzo, Define Atresic, Define URL, Definitions Of Words, Definition Of Get Up, Definition Of Quid Pro Quo, Definition Of Irreconcilable Differences, Definition Of Word, Synonyms of Repetitive, Synonym Dictionary, Synonym Antonyms. See our main index and map index for more details.
|
©2011-2024 ZebraWords.com - Define Yourself - The Search for Meanings and Meaning Means I Mean. All content subject to terms and conditions as set out here. Contact Us, peruse our Privacy Policy |
|