== Quote from bearophile (bearophileh...@lycos.com)'s article > Tom: > > What is the most efficient way of implement a rotation of ubyte[4] array? > > > > By rotation I mean: rotateRight([1, 2, 3, 4]) -> [4, 1, 2, 3] > Two versions, I have done no benchmarks so far: > import std.c.stdio: printf; > union Four { > ubyte[4] a; > uint u; > } > void showFour(Four f) { > printf("f.u: %u\n", f.u); > printf("f.a: [%d, %d, %d, %d]\n", > cast(int)f.a[0], cast(int)f.a[1], > cast(int)f.a[2], cast(int)f.a[3]); > } > void main() { > Four f; > f.a[] = [1, 2, 3, 4]; > showFour(f); > f.u = (f.u << 8) | (f.u >> 24); > showFour(f); > printf("\n"); > // alternative > f.a[] = [1, 2, 3, 4]; > uint u2 = f.u; > showFour(f); > printf("u2: %u\n", u2); > asm { > rol u2, 8; > } > f.u = u2; > showFour(f); > } > Bye, > bearophile
I am offend!