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)); }