Re: My inline assembly has the cooties.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Marco Manfredini wrote:
Hi,
The first thing I always realize when I return to code with inline assembly is, that I forgot the dodgy intricacies again. Today I seem to suffer from paralytic blindness. Could someone please enlighten me, why this program prints 20 with gcc 4.2.2 and 1010 with gcc-3.4.4?


I give up.  Is it because you didn't declare %0 as an early clobber?

Perhaps it should be: ...."=&r"(r)...

David Daney



#if 0
gcc $0 -o ${0%.*}
exit 0
#endif
#include <stdio.h>
struct S
{
int v; };
int main()
{
struct S a={10}; struct S b={1000}; int r=0;
	__asm__ volatile(
"/*XXXXXXXXXXXXX [%0]=[%1]+[%2] XX */\n " "\t movl %1,%0 \n"
			"\t addl %2,%0 \n"
	:"=r"(r)
	:"g"(a.v),"g"(b.v));
	printf("%d\n",r);
}

Cheers Marco



[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux