可変長のメモリのコピーをC言語のswitch-caseを使って書く技法
send(to, from, count)
register short *to, *from;
register count;
{
register 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);
}
}
「Duff’s_device」(2024-08-19 09:55 JTC)『ウィキペディア日本語版』より。