struct stuff {
signed int a : 5;
signed int b : 6;
signed int c : 2;
unsigned int d : 3;
};
static void main(void)
{
struct stuff var;
volatile int a, b, c, d;
a = 1;
b = 2;
c = 3;
d = 7;
var.a = a;
var.b = b;
var.c = c;
var.d = d;
a = var.a;
b = var.b;
c = var.c;
d = var.d;
asm(" " :: "r"(a), "r"(b), "r"(c), "r"(d));
}