1 #include <unistd.h> 2 3 int main(void) 4 { 5 char data[] = {0xaa, 0xaa, 0xf1, 0xf2, 0xf3, 0xc4, 0xaa, 0xaa}; 6 char exp[] = {0xaa, 0xaa, 0x00, 0x01, 0x23, 0x4c, 0xaa, 0xaa}; 7 int i; 8 9 asm volatile( 10 " pack 2(4,%[data]),2(4,%[data])\n" 11 : 12 : [data] "r" (&data[0]) 13 : "memory"); 14 for (i = 0; i < 8; i++) { 15 if (data[i] != exp[i]) { 16 write(1, "bad data\n", 9); 17 return 1; 18 } 19 } 20 return 0; 21 } 22