Regarding the first point, I didn't know the "strict aliasing" rule. I'll read up on it.
But if casting my int32* to int* is forbidden, how should I proceed if I want to access individual bytes of my int32 and be sure that the compiler will use MOVB?
Regarding the second point, I don't see how it's a "problem" with the code. The if preceding the __byte still gets removed if I replace 255 with a value greater than 255.
Cheers,
Pierre