Another question re asm constraints

Ian Lance Taylor iant@google.com
Mon Mar 25 21:56:00 GMT 2013


On Mon, Mar 25, 2013 at 2:51 PM, dw <limegreensocks@yahoo.com> wrote:
> Does specifying the + operator on outputs remove the need for listing the
> variable as an input?  For example:
>
>     __CRT_INLINE SHORT AddTest(SHORT *Addend)
>     {
>       SHORT ret = 1;
>       __asm__ __volatile__("lock\n\txaddw %0,%1 "
>     : "+r" (ret), "+m" (*Addend)
>     : "0" (ret)
>     : "cc");
>       return ret + 1;
>     }
>
> Is the "0" constraint accomplishing anything useful here

No.

> And more importantly, is the "+m" enough to ensure that any existing values
> for Addend have been written to memory?

Yes, at least from the compiler's perspective (there may be pending
writes from another processor that the compiler knows nothing about).

Ian



More information about the Gcc-help mailing list