RE: problem in extended asm

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

 



> -----Original Message-----
> From: gcc-owner On Behalf Of James E Wilson
> Sent: 13 August 2004 00:04
> To: Ankit Jain

> Ankit Jain wrote:
> > a simple question: why the followinf instruction
> > dosent work in gcc
> > asm("movq i(%1),%%mm0 \n"
> >     "movq %%mm0,(%0)
> >     :"=r"(x)
> >     :"r"(m));           //m is an array
> 
> Always include a testcase that can be compiled.  A program 
> fragment like 
> this is a very poor bug report, as often the bug is in something you 
> left out.
> 
> In this particular case, the problem is likely that you are using 
> arrays, and register allocation can not assign an array to a 
> register, 
> at least not after you have referenced an element of it.  
> Hence, you can 
> not use an 'r' constraint with an array.
> 
> Try using a vector type or a union instead of an array.

  ...The other problem being his attempt to smuggle the variable 'i' into
the asm.

  But I'm curious now:  doesn't the array reference degenerate to a pointer
like it would if you passed it to a function that requires a pointer to
whatever type the array is of?  Or does it (or should it) follow the
(machine and abi)-dependent rules for whether or not small structs are
passed byval or reference in the calling convention?


    cheers, 
      DaveK
-- 
Can't think of a witty .sigline today....


[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