union XMM {
struct{ float x,y,z,w; };
float f[4];
unsigned char b[16];
};
// test code
#include <stdio.h>
void main()
{
union XMM xmm;
xmm.x=123; xmm.y=456; xmm.z=789; xmm.w=123456789;
printf("f[0]=%f, f[1]=%f, f[2]=%f, f[3]=%f\n", xmm.f[0], xmm.f[1], xmm.f[2], xmm.f[3] );
printf("x =%f, y =%f, z =%f, w =%f\n", xmm.x, xmm.y, xmm.z, xmm.w );
printf("b[0~3 ]=%f\n", *((float*)(xmm.b+0)) );
printf("b[4~7 ]=%f\n", *((float*)(xmm.b+4)) );
printf("b[8~11 ]=%f\n", *((float*)(xmm.b+8)) );
printf("b[12~15]=%f\n", *((float*)(xmm.b+12)) );
}