
netscape 4 fan account. SW engineer and CS teacher. đłïžâđđ«đ·. BanniĂšre par @Astracc_.
- Tweets4.1K
- Following555
- Followers406
- Likes69.1K
![Rust code containing a C implementation of the infamous Duff Device bit of code.
use embed_c::embed_c;
embed_c! {
void 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);
}
}
}
fn main() {
let mut source = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
let mut dest = [0; 10];
unsafe { send(dest.as_mut_ptr(), source.as_mut_ptr(), 10); };
assert_eq!(source, dest);
}](https://pbs.twimg.com/media/FMZm8j2WUAI7Zi9.jpg?name=small&format=webp)
ALT Rust code containing a C implementation of the infamous Duff Device bit of code. use embed_c::embed_c; embed_c! { void 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); } } } fn main() { let mut source = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; let mut dest = [0; 10]; unsafe { send(dest.as_mut_ptr(), source.as_mut_ptr(), 10); }; assert_eq!(source, dest); }


































