/* Test for long-form encodings of push %reg */ | |
#include <stdio.h> | |
int foo ( int x ) | |
{ | |
int block[2]; | |
block[0] = x; | |
block[1] = 0; | |
__asm__ __volatile__( | |
"movl $0,%%edi\n\t" | |
"movl $0,%%esi\n\t" | |
"movl %0,%%edi\n\t" | |
".byte 0xFF,0xF7\n\t" /*pushl %edi */ | |
"popl %%esi\n\t" | |
"movl %%esi, %1" | |
: : /*in*/ "m"(block[0]), "m"(block[1]) : "esi","edi","memory" | |
); | |
return block[1]; | |
} | |
int main ( void ) | |
{ | |
int i; | |
for (i = 0; i < 100000000; i += 11111111) | |
printf("%d %d\n",i,foo(i)); | |
return 0; | |
} |