Duff’s Device

14 七月, 2005 (09:20) | 電腦與網路

這就是神跡 !! 這就是藝術 !!

請各位看看下面這段 code:

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);
}

我印象中我在某本書看過這段 code,但是先前當我想要介紹給別人看的時候突然找不到是在哪本書看過,翻遍了家裡的 C 語言相關書籍都沒看到,讓我有點失落;不過,剛剛在機緣巧合的情況下,我從我的 bookmark 裡面找到了 “Steve’s ‘Cute Code’ collection” 這個站,最下面一則赫然就是這段 code !! 原來它的名字叫做 “Duff’s Device”,在 Jargon File 裡面有一段解說,網路上也可以找到本人現身說法,從第 3 點裡面我才知道,原來是 BS 兄的書啊… 難怪我猛找 C 的書沒有結果 :~

Technorati Tags: ,

Comments

Comment from Yu-lin CHANG
Date: 2005/07/14, 11:07 上午

while (–n > 0); ===> while (-–n > 0);

Comment from ijliao
Date: 2005/07/14, 11:10 上午

這是 WP 自作聰明自己自動轉換的 :~

Comment from yoco
Date: 2008/12/17, 9:44 上午

迴圈展開。

因為迴圈貴貴,
如以上把他展開就可以做到一個迴圈作八個指令。
現在好的 compiler 會自動做這件事情。

Write a comment