這是個(gè)很棒的迂回循環(huán)展開(kāi)法, 由 Tom Duff 在 Lucasfilm 時(shí)所設(shè)計(jì)。它的 ``傳統(tǒng)" 形態(tài), 是用來(lái)復(fù)制多個(gè)字節(jié):
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);
}
這里 count 個(gè)字節(jié)從 from 指向的數(shù)組復(fù)制到 to 指向的內(nèi)存地址 (這是個(gè)內(nèi)存映射的輸出寄存器, 這也是為什么它沒(méi)有被增加)。它把 swtich 語(yǔ)句和復(fù)制 8 個(gè)字節(jié)的循環(huán)交織在一起, 從而解決了剩余字節(jié)的處理問(wèn)題 (當(dāng) count 不是 8 的倍數(shù)時(shí))。相信不相信, 象這樣的把 case 標(biāo)志放在嵌套在 swtich 語(yǔ)句內(nèi)的模塊中是合法的。當(dāng)他公布這個(gè)技巧給 C 的開(kāi)發(fā)者和世界時(shí), Duff 注意到 C 的 swtich 語(yǔ)法, 特別是 ``跌落" 行為, 一直是被爭(zhēng)議的, 而 ``這段代碼在爭(zhēng)論中形成了某種論據(jù), 但我不清楚是贊成還是反對(duì)"。