1 2/* Test for long-form encodings of push %reg */ 3 4#include <stdio.h> 5 6int foo ( int x ) 7{ 8 int block[2]; 9 block[0] = x; 10 block[1] = 0; 11 __asm__ __volatile__( 12 "movl $0,%%edi\n\t" 13 "movl $0,%%esi\n\t" 14 "movl %0,%%edi\n\t" 15 ".byte 0xFF,0xF7\n\t" /*pushl %edi */ 16 "popl %%esi\n\t" 17 "movl %%esi, %1" 18 : : /*in*/ "m"(block[0]), "m"(block[1]) : "esi","edi","memory" 19 ); 20 return block[1]; 21} 22 23int main ( void ) 24{ 25 int i; 26 for (i = 0; i < 100000000; i += 11111111) 27 printf("%d %d\n",i,foo(i)); 28 return 0; 29} 30