何年も前にタイトなグラフィックスI/Oの問題に取り組んでいる間、トム・ダフは、ループをアンロールし、次のように彼のDuff's Deviceを作成:Duffのデバイスは他の言語でも動作しますか?
dsend(to, from, count)
char *to, *from;
int count;
{
int n = (count + 7)/8;
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);
}
}
を(これは古いスタイルの関数パラメータを使用します - それはエラーではありません。)
このコーディングは、C言語でのアセンブラとコーディングではまったく考えられず、Cのcase文のフォールスルーに依存しています。インターレース制御構造のこのような創造性は他の言語でも使えますか?
「旧式関数のパラメータ」とは何ですか? –